java-兩種方法求兩個陣列中重複的元素 lamdba
阿新 • • 發佈:2018-12-16
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); }