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.