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.