如何使用Java Stream获取属于List中元素的元素列表

Jac*_*dor 3 java java-8 java-stream

我正在尝试获取属于给定项目列表的组件列表.

由于我开始使用流,我无法弄清楚如何做到这一点.

 projects.stream()
         .map(p -> p.getComponents())
         .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

由于Project.getComponents()返回Collection<ProjectComponent>前一个代码将返回一个List<Collection<ProjectComponent>>然而我想返回一个List<ProjectComponent>我该怎么办呢?

亲切的问候.

Ous*_* D. 9

使用 flatMap

projects.stream()
        .flatMap(p -> p.getComponents().stream())
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

flatMap将基本上展平嵌套流,即从中Stream<Stream<R>>Stream<R>,然后你将流元素收集到一个List<ProjectComponent>.