Sobes.tech
Junior — Middle

Môžete vysvetliť, čo je metóda flatMap a ako sa líši od map?

sobes.tech AI

Odpoveď od AI

Metóda map sa aplikuje na kolekciu a transformuje každý prvok, vracajúc novú kolekciu s prvkami, ktoré zodpovedajú výsledkom funkcie.

flatMap najskôr aplikuje funkciu, ktorá vracia kolekciu (alebo tok) pre každý prvok, a potom tieto kolekcie "splošťuje" (flatten) do jedného spoločného toku alebo zoznamu.

Príklad v Jave s tokmi:

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

// map vráti Stream<List<String>>
Stream<List<String>> mapped = list.stream()
    .map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));

// flatMap vráti Stream<String>
Stream<String> flatMapped = list.stream()
    .flatMap(innerList -> innerList.stream().map(String::toUpperCase));

// flatMapped sa dá zozbierať do zoznamu
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Preto je flatMap užitočný, keď funkcia vracia vnorené kolekcie a je potrebné získať plochú štruktúru.