2016-10-25 19 views
2

TL; DR:將帶孩子的家長列表轉換爲使用java streaming api的人員列表。java將家長和子女分成一個列表

假設以下類:

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流?

回答

4

您可將父母添加到流using Stream::concat

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