Java 8 Stream hat map ()
undflatMap ()
. Lassen Sie uns den Unterschied untersuchen.
Zunächst aus der Schlussfolgerung
-Map (T-> R)
ist eine 1: 1-Konvertierung des Datentyps T
in den Datentyp R
.
-FlatMap (T-> Stream <R>)
ist eine 1: N-Konvertierung vom Datentyp T
nachStream <R>
.
Stream#map()
List<String> nameList = Arrays.asList("Tanaka", "Suzuki", "Takahashi");
Stream<Integer> stream = nameList.stream().map(x -> x.length());
System.out.println(stream.collect(Collectors.toList()));
Das obige Ausführungsergebnis:
[6, 6, 9]
Tanaka | Suzuki | Takahashi |
---|---|---|
↓ | ↓ | ↓ |
6 | 6 | 9 |
Es handelt sich um eine 1: 1-Konvertierung von einer Zeichenfolge (String) in eine Zeichenfolgenlänge (Integer) wie oben beschrieben.
Stream#flatMap()
List<String> nameList = Arrays.asList("Tanaka", "Suzuki", "Takahashi");
Stream<Object> stream = nameList.stream().flatMap(x -> Stream.of(x, x.length()));
System.out.println((stream.collect(Collectors.toList())));
Das obige Ausführungsergebnis:
[Tanaka, 6, Suzuki, 6, Takahashi, 9]
Tanaka | Suzuki | Takahashi |
---|---|---|
↓ | ↓ | ↓ |
Tanaka, 6 | Suzuki, 6 | Takahashi, 9 |
1: N Konvertierung von Zeichenkette (String) in [Zeichenkette (String), Zeichenkettenlänge (Integer)]. In diesem Fall wird jedoch kein zweidimensionales Array generiert und ein flacher Stream zurückgegeben.
Recommended Posts