版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}