Sobes.tech
Junior — Middle

Можете ли објаснити шта је метода flatMap и како се разликује од map?

sobes.tech АИ

Одговор од АИ

Metoda map se primenjuje na kolekciju i transformiše svaki element, vraćajući novu kolekciju sa elementima koji odgovaraju rezultatima funkcije.

flatMap prvo primenjuje funkciju koja vraća kolekciju (ili tok) za svaki element, a zatim "spljoštava" (flatten) sve te kolekcije u jedan zajednički tok ili listu.

Primer u Javi sa tokovima:

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

// map će vratiti Stream<List<String>>
Stream<List<String>> mapped = list.stream()
    .map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));

// flatMap će vratiti Stream<String>
Stream<String> flatMapped = list.stream()
    .flatMap(innerList -> innerList.stream().map(String::toUpperCase));

// flatMapped se može sakupiti u listu
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Zbog toga je flatMap koristan kada funkcija vraća ugnježdene kolekcije, i kada je potrebna pljosnata struktura.