Sobes.tech
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.