Java 8 – map & flatMap
Java 8 – map & flatMap
Metoda map to metoda która pozwala na przemapowanie każdego elementu kolekcji na inny element. Załóżmy, że mamy kolekcję liczb całkowitych i chcemy otrzymać nową kolekcję gdzie każdy element zostanie zmapowany na wartość logiczną w zależności od tego czy liczba jest parzysta czy nie:
List<Integer> integerList = Arrays.asList(1,2,3,4,5,6,7,8,9,10); List<Boolean> integerListAfterMap = integerList.stream().map( x -> x % 2 == 0 ).collect(Collectors.toList()); System.out.println(integerListAfterMap);
Wynik:
[false, true, false, true, false, true, false, true, false, true]
Z użyciem interfejsu Function:
Function<Integer, Boolean> evenNumber = x -> x % 2 == 0; List<Boolean> integerListAfterMapUsingPredicate = integerList.stream().map(evenNumber ).collect(Collectors.toList());
Przykład z flatMap – tworzymy strukturę – listę list:
List<Integer> list1 = Arrays.asList(1,2,3); List<Integer> list2 = Arrays.asList(4,5,6); List<Integer> list3 = Arrays.asList(7,8,9); List<List<Integer>> listOfLists = Arrays.asList(list1, list2, list3);
następnie chcemy spłaszczyć powyższą strukturę do postaci wektora:
List<Integer> listOfAllIntegers = listOfLists.stream() .flatMap(x -> x.stream()) .collect(Collectors.toList()); System.out.println(listOfAllIntegers);
Wynik:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Cześć dzięki za post !
Cześć Magda, dziękuję za komentarz! 🙂