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()