/**
* 找出两个数组中相同的元素
* @param a
* @param b
* @return
*/
public static <T> Set<T> getSame(T[] a, T[] b){
Set<T> same = new HashSet<T>(); //用来存放两个数组中相同的元素
Set<T> temp = new HashSet<T>(); //用来存放数组a中的元素
for (int i = 0; i < a.length; i++) {
temp.add(a[i]); //把数组a中的元素放到Set中,可以去除重复的元素
}
for (int j = 0; j < b.length; j++) {
//把数组b中的元素添加到temp中
//如果temp中已存在相同的元素,则temp.add(b[j])返回false
if(!temp.add(b[j])) {
same.add(b[j]);
}
}
return same;
}
/**
* 找出两个数组中不相同的元素
* @param a
* @param b
* @return
*/
public static Set<Integer> getNoSame(Integer[] a, Integer[] b) {
// 存储所有元素
Set<Integer> allSet = new HashSet<>();
// 存储相同的元素
Set<Integer> sameSet = new HashSet<>();
allSet.addAll(Arrays.asList(a));
for (Integer i : b) {
if(allSet.contains(i)) {
sameSet.add(i);
}
}
allSet.addAll(Arrays.asList(b));
// 移除相同的元素
allSet.removeAll(sameSet);
return allSet;
}