首页 > 编程知识 正文

Java Map转List

时间:2023-11-21 02:54:13 阅读:308324 作者:HHAR

在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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。