java将父级和子级列入一个列表

时间:2016-10-25 08:44:46

标签: java java-stream

TL; DR:将带有孩子的父母列表转换为使用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 个答案:

答案 0 :(得分:8)

您可以将父级添加到流using Stream::concat

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