Java 8 Stream a map () et flatMap (). Examinons la différence.
Tout d'abord, de la conclusion
-Map (T-> R) est une conversion 1: 1 du type de données T en type de données R.
-FlatMap (T-> Stream <R>) est une conversion 1: N du type de données de T àStream <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()));
Le résultat de l'exécution ci-dessus:
[6, 6, 9]
| Tanaka | Suzuki | Takahashi |
|---|---|---|
| ↓ | ↓ | ↓ |
| 6 | 6 | 9 |
Il s'agit d'une conversion 1: 1 d'une chaîne de caractères (String) en une longueur de chaîne de caractères (Integer) comme décrit ci-dessus.
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())));
Le résultat de l'exécution ci-dessus:
[Tanaka, 6, Suzuki, 6, Takahashi, 9]
| Tanaka | Suzuki | Takahashi |
|---|---|---|
| ↓ | ↓ | ↓ |
| Tanaka, 6 | Suzuki, 6 | Takahashi, 9 |
1: Conversion N de la chaîne de caractères (String) en [chaîne de caractères (String), longueur de la chaîne de caractères (Integer)]. Cependant, dans ce cas, un tableau bidimensionnel n'est pas généré et un flux plat est renvoyé.
Recommended Posts