Was ist der Unterschied zwischen den Methoden map() und flatMap() in Java 8 Stream?
Hallo zusammen! Ich habe kürzlich mit Java 8 angefangen und versuche, mich mit dem Stream API vertraut zu machen. Ich habe mehrere Artikel gelesen, kann aber den Unterschied zwischen den Methoden `map()` und `flatMap()` nicht verstehen.
Ich habe ein einfaches Beispiel. Angenommen, es gibt eine Liste von Strings:
```java
List words = Arrays.asList("Hello", "World");
```
Wenn ich `map()` auf diese Liste anwende und jeden String in einzelne Zeichen aufteilen möchte:
```java
words.stream()
.map(word -> word.split(""))
.forEach(System.out::println);
```
Erhalte ich eine Ausgabe wie `[Ljava.lang.String;@1b6d3586` – irgendwelche Hash-Codes, keine Zeichen. Warum passiert das? Wie bekomme ich eine Liste von Zeichen?
Ich habe gehört, dass `flatMap()` helfen kann, verstehe aber nicht genau, wie. Was ist der grundlegende Unterschied zwischen diesen Methoden? Wann sollte man `map()` verwenden und wann `flatMap()`?