java-两种方法求两个数组中重复的元素 lamdba

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013278314/article/details/83182389

1、第一种普通的利用for循环:

public static void main(String[] args) {
		Integer[] arr1 = { 1, 2, 5, 2, 6, 8, 9 };
		Integer[] arr2 = { 2, 3, 4, 6, 9, 10 };

		Set<Integer> sames = getSames(arr1, arr2);
		
		for (Integer i : sames) {
			System.out.println(i);
		}

	}

	public static Set<Integer> getSames(Integer[] a, Integer[] b) {
		Set<Integer> sames = new HashSet<Integer>();
		Set<Integer> set = new HashSet<Integer>(Arrays.asList(a));

		for (Integer i : b) {
			if (!set.add(i))
				sames.add(i);
		}

		return sames;
	}

第二种:利用jdk1.8的lamdba语法糖

	public static void main(String[] args) {
		Integer[] arr1 = { 1, 2, 5, 2, 6, 8, 9 };
		Integer[] arr2 = { 2, 3, 4, 6, 9, 10 };

		
		Set<Integer> sames = getSamesLambda(arr1, arr2);
		for (Integer i : sames) {
			System.out.println(i);
		}

	}


	public static Set<Integer> getSamesLambda(Integer[] a, Integer[] b) {
		Set<Integer> bb = new HashSet<Integer>(Arrays.asList(b));

		List<Integer> sames = Arrays.asList(a).stream().filter(i -> !bb.add(i)).collect(Collectors.toList());

		return new HashSet<Integer>(sames);
	}

猜你喜欢

转载自blog.csdn.net/u013278314/article/details/83182389