首页 > 解决方案 > 从对象列表中获取属性的聚合列表(Java 8)

问题描述

我有一个类Division,它的属性列表Section如下

class Division {
    private List<Section> sections;
    // respective getters and setters
}

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

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

    sections.addAll(division.getSections());
}

我想知道是否有任何方法可以使用 Java-8 流来做同样的事情。

标签: javalambdajava-8java-stream

解决方案


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

List<Section> sections = divisions.stream()
    .flatMap(d -> d.getSections().stream())
    .collect(Collectors.toList());

推荐阅读