Sobes.tech
Junior — Middle

Puoi spiegare cos'è il metodo flatMap e come si differenzia da map?

sobes.tech AI

Risposta dell'AI

Il metodo map viene applicato a una collezione e trasforma ogni elemento, restituendo una nuova collezione con elementi corrispondenti ai risultati della funzione.

flatMap applica prima una funzione che restituisce una collezione (o uno stream) per ogni elemento, e poi "appiattisce" (flatten) tutte queste collezioni in un unico stream o lista.

Esempio in Java con gli stream:

List<List<String>> list = Arrays.asList(
    Arrays.asList("a", "b"),
    Arrays.asList("c", "d")
);

// map restituirà Stream<List<String>>
Stream<List<String>> mapped = list.stream()
    .map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));

// flatMap restituirà Stream<String>
Stream<String> flatMapped = list.stream()
    .flatMap(innerList -> innerList.stream().map(String::toUpperCase));

// flatMapped può essere raccolto in una lista
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Quindi, flatMap è utile quando la funzione restituisce collezioni annidate, e si desidera ottenere una struttura piatta.