从对象列表中获取聚合的属性列表(Java 8)

rav*_*aja 4 java lambda java-8 java-stream

我有一个类Division,其中包含Sectionas属性的列表,如下所示

class Division {
    private List<Section> sections;
    // respective getters and setters
}
Run Code Online (Sandbox Code Playgroud)

假设我有一个部门列表,我想获得一个部门的汇总列表,我知道可以使用下面的常规方法来完成。

List<Division> divisions = getDivisions();
List<Section> sections = new ArrayList<>();
for (Division division : divisions) {

    sections.addAll(division.getSections());
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有使用Java-8流进行相同操作的方法。

Rav*_*ala 5

您可以使用flatMap运算符进行操作。这是它的外观。

List<Section> sections = divisions.stream()
    .flatMap(d -> d.getSections().stream())
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)