如何将List的Map的值转换为单个List

时间:2017-03-30 16:40:27

标签: java performance dictionary data-structures java-stream

如何将Map<Object1, List<Object2>>的值转换为List<Object2>的最佳(高效且简单)方式。我应该简单地遍历所有条目并将adAll个项目迭代到列表中吗?

3 个答案:

答案 0 :(得分:10)

这是第三种方式,因此您不需要创建一个ArrayList,这是您实际要求的。这是使用流的正确方法,因为您不会更改任何对象的状态。

List<Object2> values = myMap.values()
                            .stream()
                            .flatMap(Collection::stream)
                            .collect(Collectors.toList());

答案 1 :(得分:0)

刚刚找到它:

 List<Object2> list = myMap.values()
                           .stream()
                           .flatMap(item -> item.stream())
                           .collect(Collectors.toList()));

答案 2 :(得分:0)

使用addAll的一个选项。

List<Object2> list = new ArrayList<>();
myMap.values().forEach(list::addAll);