如何将Map<key,value>转换为List<value>?我应该遍历所有映射值并将其插入列表吗?
当前回答
map.entrySet()提供了一个包含键和值的map.Entry对象集合。然后,您可以将其转换为任何您喜欢的集合对象,例如newArrayList(map.entrySet());
其他回答
Map<String, String > map = new HapshMap<String, String>;
map.add("one","java");
map.add("two", "spring");
Set<Entry<String, String>> set = map.entrySet();
List<Entry<String, String>> list = new ArrayList<Entry<String, String>> (set);
for(Entry<String, String> entry : list) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("java", 20);
map.put("C++", 45);
Set <Entry<String, Integer>> set = map.entrySet();
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
我们可以在列表中同时使用键和值对。也可以通过迭代列表使用Map.Entry获取键和值。
这里的问题是Map有两个值(键和值),而List只有一个值(元素)。
因此,最好的方法是获取键或值的列表。(除非我们制作一个包装器来保存键/值对)。
假设我们有一张地图:
Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");
可以通过从Map.keySet方法返回的Set创建一个新的ArrayList来获得作为List的键:
List<String> list = new ArrayList<String>(m.keySet());
虽然可以从Map.values方法返回的Collection创建一个新的ArrayList来获得List形式的值:
List<String> list = new ArrayList<String>(m.values());
获取密钥列表的结果:
Apple Another Hello
获取值列表的结果:
3.14 Element World
使用Java 8 Streams API。
List<Value> values = map.values().stream().collect(Collectors.toList());
map.entrySet()提供了一个包含键和值的map.Entry对象集合。然后,您可以将其转换为任何您喜欢的集合对象,例如newArrayList(map.entrySet());