问题
将Map <key,value>
转换为List<value>
的最佳方法是什么?只是迭代所有值并将它们插入列表中或者我忽略了什么?
#1 热门回答(1116 赞)
List<Value> list = new ArrayList<Value>(map.values());
假设:
Map<Key,Value> map;
#2 热门回答(123 赞)
这里的问题是Map
有两个值(一个键和一个值),而List
只有一个值(一个元素)。
因此,可以做的最好的事情是获得键的“List”或值。 (除非我们使用包装器来保持键/值对)。
假设我们有一个Map
:
Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");
作为List
的键可以通过从Map.keySet
方法返回的Set
创建一个新的ArrayList
来获得:
List<String> list = new ArrayList<String>(m.keySet());
虽然可以从Map.values
方法返回的Collection
创建一个新的ArrayList
来获取List
的值:
List<String> list = new ArrayList<String>(m.values());
获取键的“List”的结果:
Apple
Another
Hello
获取值的“List”的结果:
3.14
Element
World
#3 热门回答(23 赞)
使用Java 8 Streams API。
List<Value> values = map.values().stream().collect(Collectors.toList());