Avatar ·

Qual é a diferença entre os métodos map() e flatMap() no Java 8 Stream?

Olá a todos! Recentemente comecei a estudar Java 8 e estou tentando entender o Stream API. Li vários artigos, mas não consigo entender a diferença entre os métodos `map()` e `flatMap()`. Tenho um exemplo simples. Suponha que haja uma lista de strings: ```java List words = Arrays.asList("Hello", "World"); ``` Se eu aplicar `map()` a esta lista e quiser dividir cada string em caracteres individuais: ```java words.stream() .map(word -> word.split("")) .forEach(System.out::println); ``` Eu obtenho uma saída como `[Ljava.lang.String;@1b6d3586` — alguns códigos hash, não caracteres. Por que isso acontece? Como posso obter uma lista de caracteres? Ouvi dizer que `flatMap()` pode ajudar, mas não entendo como exatamente. Qual é a diferença fundamental entre esses métodos? Quando devo usar `map()` e quando `flatMap()`? Ficarei grato por exemplos claros e explicações para iniciantes. <<>>

Diferença principal entre map() e flatMap()

A diferença chave é que map()