Sobes.tech
Junior — Middle

Pode explicar o que é o método flatMap e como ele difere do map?

sobes.tech IA

Resposta da IA

O método map aplica-se a uma coleção e transforma cada elemento, retornando uma nova coleção com elementos que correspondem aos resultados da função.

flatMap primeiro aplica uma função que retorna uma coleção (ou fluxo) para cada elemento, e depois "achata" (flatten) todas essas coleções em um único fluxo ou lista.

Exemplo em Java com fluxos:

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

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

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

// flatMapped pode ser coletado em uma lista
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Portanto, flatMap é útil quando a função retorna coleções aninhadas, e é necessário obter uma estrutura plana.