数组转化成map和set的简单实现

将数组转化为Set(不使用Set类)。

思路:1.将数组排序

     2.遍历数组,将临近的元素进行比较,如果不相等就加入容器。 (当然这里返回的是一个有序无重的容器没有实现无序)

 

    /**
     * 将数组去重(不使用Set的情况下)
     * @param array  被操作数组
     * @return 目标Set
     */
    public static List<Integer> intToSet(int[] array){
        List<Integer> list = new ArrayList<Integer>();
        Arrays.sort(array);
        list.add(array[0]);
        for(int i = 0;i<array.length-1;i++){
            if(array[i]!=array[i+1]){
                list.add(array[i+1]);
            }
        }
    
        return list;
    }

 

将数组转化为Map(key为元素,value为次数)。

因为上面实现了set,我们这里就直接用Set容器。

思路:

1.将数组装入Set,去重。

2.遍历Set,将里面的元素取出计算出出现的次数。

 

    /**
     * 数组 转成 map形式
     * @param array 被操作数组
     * @return 目标Map
     */
    public static Map<Integer,Integer> intToMap(int[] array){
        Set<Integer> set = new HashSet<Integer>();
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i = 0;i<array.length;i++){
            set.add(array[i]);
        }
        Iterator<Integer> it = set.iterator();
        while(it.hasNext()){
            int next = it.next();
            int index = 0;
            for(int n : array){
                if(n==next) index++;
            }
            map.put(next, index);
            System.out.print(next);
            System.out.println("======"+index);
        }
                
        return map;
    }

 

posted @ 2017-06-16 20:44  少时不识月  阅读(6803)  评论(0编辑  收藏  举报