在Java编程中,我们经常需要将Map转换为List。这是因为List数据结构对于元素的操作(如添加、删除、遍历等)更方便,更容易理解。接下来将从实现方式、应用场景以及注意事项三个方面,对Java Map转List进行详细的阐述。
一、实现方式
1、Java8中提供了一种新的转换方式,可以通过Stream API轻松地将Map转换为List:
Map<Integer, String> map = new HashMap<>(); // 填充map List<Integer> keyList = map.keySet().stream().collect(Collectors.toList()); List<String> valueList = map.values().stream().collect(Collectors.toList());
另外,我们也可以通过传统的方式将Map转换为List:
Map<Integer, String> map = new HashMap<>(); // 填充map List<Integer> keyList = new ArrayList<>(map.keySet()); List<String> valueList = new ArrayList<>(map.values());
二、应用场景
1、在进行Map遍历的时候,由于Map的存储结构并不保证顺序,如果需要按特定顺序遍历,那么就需要将Map转换为List。
Map<Integer, String> map = new TreeMap<>(); // 填充map List<Map.Entry<Integer, String>> entryList = new ArrayList<>(map.entrySet()); Collections.sort(entryList, Map.Entry.comparingByKey());
2、在需要对Map的key或value进行集合操作时,比如寻找交集并集,会更方便如果将其转为List。
Map<Integer, String> map1 = new HashMap<>(); // 填充map1 Map<Integer, String> map2 = new HashMap<>(); // 填充map2 List<Integer> list1 = new ArrayList<>(map1.keySet()); List<Integer> list2 = new ArrayList<>(map2.keySet()); // key的交集 list1.retainAll(list2); // key的并集 list1.addAll(list2);
三、注意事项
1、在将Map转换为List的过程中,需要注意List集合未去重的特点,而Map的key是唯一的,所以在转换成List后,可能会有重复的元素。
Map<Integer, String> map = new HashMap<>(); // 填充map List<String> valueList = map.values().stream().collect(Collectors.toList()); Set<String> valueSet = new HashSet<>(valueList);
2、在对List进行操作(如添加、删除元素)时,不会影响到原来的Map。
Map<Integer, String> map = new HashMap<>(); // 填充map List<String> valueList = map.values().stream().collect(Collectors.toList()); valueList.add("new Value"); // 这里添加的新元素,不会改变原始的map
原创文章,作者:NRRX,如若转载,请注明出处:https://www.beidandianzhu.com/g/1362.html