Stream.map() contre Stream.flatMap() en Java 8
Stream.map() et Stream.flatMap() sont deux méthodes couramment utilisées dans Java 8 qui effectuent des transformations similaires sur un flux de valeurs. Cependant, ils présentent une différence fondamentale dans la façon dont ils traitent et renvoient les valeurs.
Stream.map()
- Accepte une fonction super T, ? étend R> comme argument, où T est le type d'entrée et R est le type de sortie.
- Applique la fonction donnée à chaque élément du flux d'entrée.
- Produit un nouveau flux contenant les valeurs transformées, chacun correspondant à une valeur d'entrée.
- Par exemple, étant donné un flux d'entiers, map peut être utilisée pour transformer chaque entier en son carré.
Stream.flatMap()
- Accepte une fonction super T, ? étend Stream étend R>> comme argument, qui renvoie un flux pour chaque valeur d'entrée.
- Appelle la fonction sur chaque élément du flux d'entrée.
- Les flux résultants sont concaténés en un seul flux, créant un "aplati " sortie.
- Par exemple, étant donné un flux de chaînes, flatMap peut être utilisé pour extraire tous les caractères individuels dans un seul flux de caractères.
Différence clé
La principale différence entre map() et flatMap() réside dans la façon dont ils gèrent les résultats de la fonction de transformation :
-
map() produit une valeur transformée pour chaque entrée value.
-
flatMap() produit zéro ou plus valeurs transformées pour chaque valeur d'entrée.
Cette distinction affecte la forme et le contenu du flux résultant. flatMap() permet la création de flux imbriqués, tandis que map() conserve la même dimensionnalité du flux d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!