协慌网

登录 贡献 社区

如何在 Java 中将 Map 转换为 List?

Map<key,value>转换为List<value>的最佳方法是什么?只是遍历所有值并将它们插入列表中,还是我忽略了某些内容?

答案

List<Value> list = new ArrayList<Value>(map.values());

假设:

Map<Key,Value> map;

这里的问题是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");

可以通过从Map.keySet方法返回Set创建一个新的ArrayList List的键:

List<String> list = new ArrayList<String>(m.keySet());

虽然可以通过Map.values方法返回的Collection List的值来创建一个新的ArrayList

List<String> list = new ArrayList<String>(m.values());

获得键List

Apple
Another
Hello

获取值List

3.14
Element
World

使用 Java 8 Streams API。

List<Value> values = map.values().stream().collect(Collectors.toList());