- import java.util.Arrays;
- import java.util.HashSet;
- publicclass FindSameElements {
- /** *//**
- * 获取两个整型数组之间的重复元素集合
- *
- * @param array1
- * 数组参数1
- * @param array2
- * 数组参数2
- * @return
- */
- publicstatic HashSet findSame(int array1[],int array2[]) {
- HashSet result = new HashSet();// 重复元素结果集合
- HashSet set = new HashSet();// 利用HashSet来寻找重复元素
- for (int i =0; i < array1.length; i++) {
- set.add(array1[i]);// 把 array1 添加到 set,有过滤作用
- }
- for (int i =0; i < array2.length; i++) {// 遍历第二个数组
- if (!set.add(array2[i])) {// 若有重复元素,add方法返回 false
- result.add(array2[i]);// 将重复出现的元素加入结果集合
- }
- }
- return result;
- }
- publicstaticvoid main(String args[]) {
- int a[] = {1,6, 2,8,5, 8,6,9, 0 };
- int b[] = {4,5, 4,8,7, 6,2,0 };
- // 获取重复元素集合
- HashSet result = findSame(a, b);
- // 遍历输出重复元素
- for (Object o : result) {
- System.out.print(o + " ");
- }
- }
- }
理论上要求重写,在HshSet里面,你记住下面两条规则就好: 1、内容equals的对象hashcode肯定相等 2、两个对象的hashcode不相等则两个对象不equals 所以你重写了equals,根据第1点,理论上要重写hashCode,以确保第1点(第2点是第1点的逆反定义,所以隐含了也要保证第2点)的特性。