Maison >Java >javaDidacticiel >Quelle est la différence entre `map()` et `flatMap()` dans Java 8 Streams ?

Quelle est la différence entre `map()` et `flatMap()` dans Java 8 Streams ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-16 08:44:03914parcourir

What's the Difference Between `map()` and `flatMap()` in Java 8 Streams?

Comprendre la différence entre les méthodes map() et flatMap() de Java 8

Dans Java 8, map() et flatMap() Les méthodes peuvent être appliquées à un Stream, renvoyant un Stream. Cependant, ces méthodes diffèrent par leur relation entrée-sortie.

Méthode map()

L'opération map() génère une valeur de sortie pour chaque valeur d'entrée. Essentiellement, il applique une fonction à chaque élément du flux d’entrée. La fonction prend la valeur d'entrée et produit une seule valeur de résultat.

Méthode flatMap()

En revanche, l'opération flatMap() peut produire n'importe quel nombre de valeurs ( y compris zéro) pour chaque valeur d’entrée. Ceci est activé par son argument : une fonction qui prend une valeur et renvoie un nombre arbitraire de valeurs.

La raison de cette différence est que les méthodes Java ne peuvent renvoyer que zéro ou une valeur. flatMap() contourne cette limitation en permettant à la fonction mappeur de renvoyer un flux en sortie. Les valeurs de ce flux sont ensuite drainées et transmises au flux de sortie. Par conséquent, la sortie est considérée comme « aplatie » puisque les regroupements de valeurs de la fonction mapper ne sont pas distinguables dans le flux de sortie.

Utilisation

Généralement, flatMap() est utilisé lorsque la fonction mapper a l'intention de renvoyer des valeurs nulles (en utilisant Stream.empty()) ou plusieurs valeurs (en utilisant Stream.of(a, b, c)). Néanmoins, tout type de flux peut être restitué.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn