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.