1. 程式人生 > >java-兩種方法求兩個陣列中重複的元素 lamdba

java-兩種方法求兩個陣列中重複的元素 lamdba

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);
	}