Sobes.tech
Junior — Middle

El tudná magyarázni, mi az a flatMap módszer, és miben különbözik a map-tól?

sobes.tech MI

Válasz az MI-től

A map módszer egy kollekción alkalmazva minden elemen végrehajt egy transzformációt, és egy új kollekciót ad vissza, amely megfelel a függvény eredményeinek.

A flatMap először egy olyan függvényt alkalmaz, amely minden elemre egy kollekciót (vagy áramlást) ad vissza, majd ezeket az kollekciókat "lapítja" (flatten) egyetlen közös áramlássá vagy listává.

Java példával áramlásokkal:

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

// map, Stream<List<String>>-t ad vissza
Stream<List<String>> mapped = list.stream()
    .map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));

// flatMap, Stream<String>-t ad vissza
Stream<String> flatMapped = list.stream()
    .flatMap(innerList -> innerList.stream().map(String::toUpperCase));

// flatMapped listává gyűjthető
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Ezért a flatMap akkor hasznos, amikor a függvény beágyazott kollekciókat ad vissza, és egy lapos szerkezetre van szükség.