"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quelle est la principale différence entre Stream.map() et Stream.flatMap() dans Java 8 ?

Quelle est la principale différence entre Stream.map() et Stream.flatMap() dans Java 8 ?

Publié le 2024-11-15
Parcourir:812

What\'s the Key Difference Between Stream.map() and Stream.flatMap() in Java 8?

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 le valeurs transformées, chacune 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 une sortie "aplatie".
  • Par exemple, étant donné un flux de chaînes, flatMap peut être utilisé pour extraire tous les caractères individuels en un seul flux de caractères.

Différence clé

La principale différence entre map() et flatMap() réside dans la manière dont ils gèrent les résultats de la fonction de transformation :

  • map() produit une valeur transformée pour chaque valeur d'entrée.
  • 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3