Mick.987

相信开源,才是未来的春天!

 

用HashSet查找两个int数组中的相同元素

其实用两个循环嵌套就可以实现,但这里只是为了演示HashSet的去重功能。

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import com.sun.java_cup.internal.internal_error;

public class FindSameElements {
   
   
    /**
     * 获取两个整型数组之间的相同元素集合
     * @param array1 参数数组1
     * @param array2 参数数组2
     * @return 两个数组之间相同的元素
     */
    public static 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,有过滤作用
        }
       
        int[] temp = dropSame(array2);
       
        for( int i = 0; i < temp.length ; i++){
            if(!set.add(temp[i])){//若有重复元素,add方法返回false
                result.add(temp[i]);//将重复出现的元素加入结果集合
            }
        }
        return result;
    }
   
    /**
     * 去掉数组内部重复元素
     * @param array
     * @return
     */
    public static int[] dropSame(int[] array){
        int[] arr = new int[array.length];
        HashSet set = new HashSet();
        List list = new ArrayList();
        for(int i = 0; i < array.length ; i++){
            set.add(array[i]);//用set去掉array中重复的元素
        }
        list.addAll(set);
        for(int i = 0 ; i < list.size() ; i++){
            arr[i] = list.get(i);
        }
        return arr;
    }
   
   
   
    public static void 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);
        //遍历输出result元素
        for(Object o : result){
            System.out.println(o+"");
        }
       
    }
}

 

宝贝网址:

posted on 2012-05-31 12:42  张朋飞  阅读(651)  评论(0编辑  收藏  举报

导航