Sobes.tech
Junior — Middle

Můžete vysvětlit, co je metoda flatMap a jak se liší od map?

sobes.tech AI

Odpověď od AI

Metoda map se aplikuje na kolekci a transformuje každý prvek, vracejíc novou kolekci s prvky odpovídajícími výsledkům funkce.

flatMap nejprve aplikuje funkci, která vrací kolekci (nebo proud) pro každý prvek, a poté "zplošťuje" (flatten) všechny tyto kolekce do jednoho společného proudu nebo seznamu.

Příklad v Java s proudy:

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

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

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

// flatMapped lze shromáždit do seznamu
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Proto je flatMap užitečný, když funkce vrací vnořené kolekce a je potřeba získat plochou strukturu.