【发布时间】:2017-08-24 17:21:48
【问题描述】:
如何将Map<Object1, List<Object2>> 的值转换为List<Object2> 的最佳(高效且简单)方法。我是否应该简单地遍历所有条目并将 adAll 项目添加到列表中?
【问题讨论】:
标签: java performance dictionary data-structures java-stream
如何将Map<Object1, List<Object2>> 的值转换为List<Object2> 的最佳(高效且简单)方法。我是否应该简单地遍历所有条目并将 adAll 项目添加到列表中?
【问题讨论】:
标签: java performance dictionary data-structures java-stream
这是第三种方法,因此您不需要创建 ArrayList,这正是您实际要求的。这是使用流的正确方法,因为您不会更改任何对象的状态。
List<Object2> values = myMap.values()
.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
【讨论】:
使用 addAll 的一个选项。
List<Object2> list = new ArrayList<>();
myMap.values().forEach(list::addAll);
【讨论】:
刚刚找到:
List<Object2> list = myMap.values()
.stream()
.flatMap(item -> item.stream())
.collect(Collectors.toList()));
【讨论】: