Java基础(6)List、Set、Map的相互转换

集合之间的互相转换

  集合无非就是数据的不同存放形式,在日常使用中,不同集合之间互相转换是常有的,下面就简单介绍几种:

List与Set互相转换

由于这两个都是单列集合,可以很容易进行转换。注意,list转成set之后,会丢失自己的排序以及重复数据。我们有时候会使用这个特性来对list进行去重处理。同理,若是想用这个方法做自定义对象list去重,则需要重写对象的重写其hashcode方法和equals方法

list转set

这个转换通常用来做去重

        List<String> arrayList = new ArrayList<>();
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("c");
        arrayList.add("a");
        Set<String> newHashSet = new HashSet<>(arrayList);
        
        System.out.println("arrayList:" + arrayList.toString());
        System.out.println("newHashSet:" + newHashSet.toString());

转换结果
我们可以看到,list转换成set时候,新得到的set是去重得。至于abc这个排序,则是在哈希值比较小时候,会得到整齐的排列,值大了就不好说了;

set转list

我习惯转成List之后进行排序。

        Set<String> hashSet = new HashSet<>();
        hashSet.add("a");
        hashSet.add("c");
        hashSet.add("b");
        hashSet.add("c");
        hashSet.add("d");
        List<String> newArrayList = new ArrayList<>(hashSet);
        List<String> newLinkedList = new LinkedList<>(hashSet);
        

Map

Map属于双列集合,所以转换成List或者set的话,有一个很重要的问题,就是你到底想要得到什么。
正常情况下,我们想得到Map的key或者value集合
首先我们创建一个Map

        Map<String, String> hashMap = new HashMap<>();
        hashMap.put("a", "啊");
        hashMap.put("b", "波");
        hashMap.put("c", "刺");

Map 得到Set

Map与Set其实很相似,,所以他们俩转换起来也很方便

Set<String> mapKeySet = hashMap.keySet();
         /**
         * 由于map的value没有值的限制,所以在进行转换的时候,如果用set作为容器来承接,
         * 可能会丢失重复数据。
         * 这里用hashMap.values()方法得到的,其实是一个没有具体类型的Collection集合;
         */
Set<String> mapValueSet = new HashSet<>(hashMap.values());

还有一种就是转换成以map每个键值对为元素的set

//这里引用java.util.Map.Entry;
Set<Entry<String, String>> mapEntrySet = hashMap.entrySet();
System.out.println("mapEntrySet取值:" + mapEntrySet.toString());

我们把结果打印一下
打印结果

Map 得到List

这里还是使用上面的Map,我们转换Map的key为List,其实是使用了set作为中转。

List<String> mapKeyList = new ArrayList<>(hashMap.keySet());

而前文说过,hashMap.values()方法得到的,其实是一个没有具体类型的Collection集合;
那么的到values的集合,更合适的是使用List作为容器承装。

List<String> mapValueList = new ArrayList<>(hashMap.values());

至于entryList参考key的流程,使用set中转,就不再赘述了。

List、Set 得到Map 请看我的下一篇博客

猜你喜欢

转载自blog.csdn.net/moye666/article/details/93601135