Junior — Middle
Vai jūs varat izskaidrot, kas ir flatMap metode un kā tas atšķiras no map?
sobes.tech AI
Atbilde no AI
map metode tiek ir tiek kolekcijai un tiek katram elementam tiek, un tas atgriež rezultātu kolekciju.
flatMap vispirms piemēro funkciju, kas katram elementam atgriež kolekciju (vai straumi), un tad "izlīdzina" (flatten) visas šīs kolekcijas vienā kopīgā straumē vai sarakstā.
Piemērs Java ar straumēm:
List<List<String>> list = Arrays.asList(
Arrays.asList("a", "b"),
Arrays.asList("c", "d")
);
// map atgriezīs Stream<List<String>>
Stream<List<String>> mapped = list.stream()
.map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));
// flatMap atgriezīs Stream<String>
Stream<String> flatMapped = list.stream()
.flatMap(innerList -> innerList.stream().map(String::toUpperCase));
// flatMapped var savākt sarakstā
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]
Tādēļ flatMap ir noderīgs, kad funkcija atgriež iekļautas kolekcijas, un nepieciešama plakana struktūra.