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

Posted 少时不识月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组转化成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;
    }

 

以上是关于数组转化成map和set的简单实现的主要内容,如果未能解决你的问题,请参考以下文章

Set和Map

如何将这个JSON字符串转化成list对象

Java中Set 和List两个集合怎样互相转化

如何将Map转化为json字符串

java 如何把数字转化成阿拉伯语数字、波斯数字

代码片段 - Golang 实现集合操作