Junior — Middle
Ar galite paaiškinti, kas yra flatMap metodas ir kaip jis skiriasi nuo map?
sobes.tech AI
Atsakymas iš AI
map metodas taikomas kolekcijai ir keičia kiekvieną elementą, grąžindamas naują kolekciją su elementais, atitinkančiais funkcijos rezultatus.
flatMap pirmiausia taiko funkciją, kuri grąžina kolekciją (arba srautą) kiekvienam elementui, ir tada "išlygina" (flatten) visas šias kolekcijas į vieną bendrą srautą arba sąrašą.
Pavyzdys Java su srautais:
List<List<String>> list = Arrays.asList(
Arrays.asList("a", "b"),
Arrays.asList("c", "d")
);
// map grąžins Stream<List<String>>
Stream<List<String>> mapped = list.stream()
.map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));
// flatMap grąžins Stream<String>
Stream<String> flatMapped = list.stream()
.flatMap(innerList -> innerList.stream().map(String::toUpperCase));
// flatMapped galima surinkti į sąrašą
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]
Todėl flatMap yra naudingas, kai funkcija grąžina įdėtus kolekcijas, ir reikia gauti plokščią struktūrą.