一尘不染

使用JAVA 8 Streams从仅创建地图值列表的地图中创建1个列表

java

我有一张地图,其中“值”是项目列表:

Map<User, List<Project>> projectsMap = ...

我想从地图中提取项目,但仅提取1个项目列表:

我已经看到了答案,但它们不适用于我的情况。我不想要这个结果:

List<List<Project>> theValueOfTheMap;

我想要的结果是:

List<Project> projects = ... // All the project in the value's map

如何使用JAVA 8 Streams实现此目的?谢谢。莱昂纳多。


阅读 184

收藏
2020-12-03

共1个答案

一尘不染

感谢@Holger的回答。

List<Project> projects = projectsMap.values().stream().flatMap(List::stream)
.collect(‌​Collectors.toList())‌​;

在值映射中的Collection为Null的情况下避免NullPointerException的代码:

projectsMap.values().stream().filter(Objects::nonNull)
.flatMap(List::stream).collect(Collectors.toList());
2020-12-03