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