Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, czym jest metoda flatMap i jak różni się od map?

sobes.tech AI

Odpowiedź od AI

Metoda map jest stosowana do kolekcji i przekształca każdy element, zwracając nową kolekcję z elementami odpowiadającymi wynikom funkcji.

flatMap najpierw stosuje funkcję, która zwraca kolekcję (lub strumień) dla każdego elementu, a następnie "spłaszcza" (flatten) te wszystkie kolekcje w jeden wspólny strumień lub listę.

Przykład w Java z użyciem strumieni:

List<List<String>> list = Arrays.asList(
    Arrays.asList("a", "b"),
    Arrays.asList("c", "d")
);

// map zwróci Stream<List<String>>
Stream<List<String>> mapped = list.stream()
    .map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));

// flatMap zwróci Stream<String>
Stream<String> flatMapped = list.stream()
    .flatMap(innerList -> innerList.stream().map(String::toUpperCase));

// flatMapped można zebrać do listy
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Dlatego flatMap jest przydatny, gdy funkcja zwraca zagnieżdżone kolekcje, a potrzebna jest płaska struktura.