Java流将父级和子级合并为一个列表

13

简而言之:使用Java流API将具有子代的父母列表转换为人员列表。

假设以下类:

public abstract class Person {
    private String name;
}

public class Parent extends Person {
   List<Children> children;
}

public class Child extends Person {
    int age;
}
以下代码将会给我返回所有子元素的列表。
List<Child> allChildren = parents.stream()
    .flatMap(p -> p.getChildren().stream())
    .collect(Collectors.toList());

我想获取包括父母在内的所有人员名单。使用Java 8流是否可以实现?

1个回答

16

您可以使用Stream::concat方法将父级添加到流中:

List<Person> persons = parents.stream()
    .flatMap(p -> Stream.concat(Stream.of(p), p.getChildren().stream()))
    .collect(Collectors.toList());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接