[JAVA] Différence entre Stream map et flatMap

Java 8 Stream a map () et flatMap (). Examinons la différence.

Conclusion

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

Différence entre Stream map et flatMap
Différence entre vh et%
Différence entre i ++ et ++ i
Vers la compréhension de la carte et de la flatmap dans Stream (1)
Différence entre produit et variante
Différence entre redirect_to et render
[Java] Différence entre == et égal
Différence entre redirect_to et render
Différence entre CUI et GUI
Différence entre les variables et les variables d'instance
Différence entre mockito-core et mockito-all
Différence entre classe et instance
Différence entre l'installation de bundle et de bundle
Différence entre ArrayList et LinkedList
Différence entre render et redirect_to
Différence entre List et ArrayList
Différence entre .bashrc et .bash_profile
Différence entre StringBuilder et StringBuffer
Différence entre render et redirect_to
[Ruby] Différence entre obtenir et publier
Différence entre la méthode d'instance et la méthode de classe
Différence entre interface et classe abstraite
Différence entre l'opérateur == et la méthode égale
[Java] Différence entre Hashmap et HashTable
[Terminal] Différence entre irb et pry
JavaServlet: différence entre executeQuery et executeUpdate
[Ruby] Différence entre is_a? Et instance_of?
Différence entre l'opérateur == et la méthode eqals
Différence approximative entre RSpec et minitest
[Rails] Différence entre find et find_by
Différence entre la variable d'instance et la variable de classe
[JAVA] Différence entre abstrait et interface
Différence entre Thymeleaf @RestController et @Controller
[Java] Différence entre array et ArrayList
Différence entre le type primitif et le type de référence
Différence entre string.getByte () et Hex.decodeHex (string.toCharaArray ())
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
[rails] Différence entre redirect_to et render
[Android] Différence entre finish () et return;
Remarque: Différence entre Ruby "p" et "met"
Différence entre final et immuable en Java
[Remarque] Différence entre l'installation et la mise à jour du bundle
Différence entre la variable d'instance Ruby et la variable locale
Différence entre pop () et peek () dans la pile
[Pour les débutants] Différence entre Java et Kotlin
Différence entre isEmpty et isBlank de StringUtils
Différence entre getText () et getAttribute () de Selenium
À propos de la différence entre irb et pry
Différence entre "|| =" et "instance_variable_defined?" Dans Ruby memo
Différence entre EMPTY_ELEMENTDATA et DEFAULTCAPACITY_EMPTY_ELEMENTDATA dans ArrayList
[Ruby] Différence entre print, put et p
[Java] Différence entre la plage Intstream et la plageClosed
Différence entre int et Integer en Java
[Rails] Différence entre redirect_to et render [Débutant]