Junior — Middle
Poți explica ce este metoda flatMap și cum diferă de map?
sobes.tech AI
Răspuns de la AI
Metoda map se aplică unei colecții și transformă fiecare element, returnând o colecție nouă cu elemente care corespund rezultatelor funcției.
flatMap aplică mai întâi o funcție care returnează o colecție (sau flux) pentru fiecare element, apoi "aplatizează" (flatten) toate aceste colecții într-un flux sau listă comună.
Exemplu în Java cu fluxuri:
List<List<String>> list = Arrays.asList(
Arrays.asList("a", "b"),
Arrays.asList("c", "d")
);
// map va returna Stream<List<String>>
Stream<List<String>> mapped = list.stream()
.map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));
// flatMap va returna Stream<String>
Stream<String> flatMapped = list.stream()
.flatMap(innerList -> innerList.stream().map(String::toUpperCase));
// flatMapped poate fi colectat într-o listă
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]
Prin urmare, flatMap este util atunci când funcția returnează colecții imbricate și se dorește obținerea unei structuri plate.