package functionalexamples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class FlatMapExample { public static void main(String[] args) { flatMapExample1(); flatMapExample2(); } private static void flatMapExample2() { List europeanCountries = Arrays.asList("Almanya", "Avusturya", "Belçika", "Bulgaristan"); List africanCountries = Arrays.asList("Ethiopia", "Tanzania", "Kenya", "Sudan"); List asianCountries = Arrays.asList("Japonya", "Çin", "Hindistan", "Kore"); List> allCountries = new ArrayList<>(); allCountries.add(europeanCountries); allCountries.add(africanCountries); allCountries.add(asianCountries); System.out.println("allCountries as list ------------------------------------ "); System.out.println(allCountries); /* output : [[Almanya, Avusturya, Belçika, Bulgaristan], [Ethiopia, Tanzania, Kenya, Sudan], [Japonya, Çin, Hindistan, Kore]] */ System.out.println("allCountries as list foreach ------------------------------------ "); allCountries.forEach(System.out::println); /* output : [Almanya, Avusturya, Belçika, Bulgaristan] [Ethiopia, Tanzania, Kenya, Sudan] [Japonya, Çin, Hindistan, Kore] */ List allCountriesAsFlat = allCountries.stream() .flatMap(country -> country.stream()).collect(Collectors.toList()); System.out.println("allCountries as String list ------------------------------------ "); System.out.println(allCountriesAsFlat); /* output : [Almanya, Avusturya, Belçika, Bulgaristan, Ethiopia, Tanzania, Kenya, Sudan, Japonya, Çin, Hindistan, Kore] */ } private static void flatMapExample1() { List list1 = Arrays.asList( new Person(1, "Metin", "Aln"), new Person(2, "Kağan", "Aln"), new Person(3, "Yusuf", "Aln"), new Person(4, "Dilek", "Aln") ); List list2 = Arrays.asList( new Person(9, "Enver", "Akça"), new Person(10, "Kağan", "Korkmaz"), new Person(11, "Yusuf", "Sönmez"), new Person(12, "Yılmaz", "Aln") ); List list3 = Arrays.asList( new Person(5, "Ahmet", "Davut"), new Person(6, "Rıza", "Özkök"), new Person(7, "Ali", "Can"), new Person(8, "Ayşe", "Nur") ); List> personList = Arrays.asList( list1, list2, list3); System.out.println(" ----------------------------- personList"); System.out.println(personList); /* output : [[Person{id=1, name='Metin', surname='Aln'}, Person{id=2, name='Kağan', surname='Aln'}, Person{id=3, name='Yusuf', surname='Aln'}, Person{id=4, name='Dilek', surname='Aln'}], [Person{id=9, name='Enver', surname='Akça'}, Person{id=10, name='Kağan', surname='Korkmaz'}, Person{id=11, name='Yusuf', surname='Sönmez'}, Person{id=12, name='Yılmaz', surname='Aln'}], [Person{id=5, name='Ahmet', surname='Davut'}, Person{id=6, name='Rıza', surname='Özkök'}, Person{id=7, name='Ali', surname='Can'}, Person{id=8, name='Ayşe', surname='Nur'}]] */ List allIds = personList.stream() .flatMap(persons -> persons.stream()) .map(person -> person.id) .collect(Collectors.toList()); System.out.println(" ----------------------------- allIds"); System.out.println(allIds); /* output : [1, 2, 3, 4, 9, 10, 11, 12, 5, 6, 7, 8] */ List filterIds = personList.stream() .flatMap(persons -> persons.stream()) .map(person -> person.id > 5 ? person.id : null) .collect(Collectors.toList()); System.out.println(" ----------------------------- filterIds"); System.out.println(filterIds); /* output : [null, null, null, null, 9, 10, 11, 12, null, 6, 7, 8] */ } } class Person{ public int id; public String name; public String surname; public Person(int id, String name, String surname) { this.id = id; this.name = name; this.surname = surname; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", surname='" + surname + '\'' + '}'; } }