Giả sử các bạn có danh sách của Student, mỗi Student lại có một danh sách các người thân, mỗi người thân đại diện bởi class Person (name, id, age).
Yêu cầu: Lấy danh sách toàn bộ người thân của sinh viên
syntax
public final <R> Stream<R> flatMap(Function<? super P_OUT, ? extends Stream<? extends R>> mapper)
// File Person.java public class Person { private String name; private String id; private int age; public Person(String name, String id, int age) { this.name = name; this.id = id; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", id='" + id + '\'' + ", age=" + age + '}'; } }
// File Student.java import java.util.List; public class Student { private String name; private List<Person> relatives; public Student(String name, List<Person> relatives) { this.name = name; this.relatives = relatives; } public List<Person> getRelatives() { return relatives; } }
// File Main.java import java_regex.Person; import java_regex.Student; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Student> arr = new ArrayList<>(); List<Person> relatives1 = new ArrayList<>(); relatives1.add(new Person("CHA", "01", 50)); relatives1.add(new Person("ME", "02", 55)); relatives1.add(new Person("BA", "03", 70)); arr.add(new Student("A", relatives1)); List<Person> relatives2 = new ArrayList<>(); relatives2.add(new Person("CHA", "04", 60)); relatives2.add(new Person("ME", "05", 65)); relatives2.add(new Person("BA", "06", 85)); arr.add(new Student("B", relatives2)); List<Person> persons = arr.stream() .flatMap(student -> student.getRelatives().stream()) .collect(Collectors.toList()); persons.forEach(person -> System.out.println(person.toString())); } }
Output:
Person{name=’CHA’, id=’01’, age=50}
Person{name=’ME’, id=’02’, age=55}
Person{name=’BA’, id=’03’, age=70}
Person{name=’CHA’, id=’04’, age=60}
Person{name=’ME’, id=’05’, age=65}
Person{name=’BA’, id=’06’, age=85}