Traitement de flux avec les méthodes map() et flatMap()
Dans Java 8, l'interface Stream fournit deux méthodes pour traiter les flux de données : map() et flatMap(). Les deux méthodes prennent une fonction comme argument et produisent un nouveau flux, mais elles diffèrent dans la manière dont elles gèrent les résultats de l'application de la fonction à chaque élément.
Méthode map()
La méthode map() applique la fonction spécifiée à chaque élément du flux d'entrée, produisant un nouveau flux de résultats. Par exemple, l'extrait de code suivant utilise map() pour doubler la valeur de chaque entier dans une liste :
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .map(i -> i * 2) .forEach(System.out::println);
Le résultat de ce code serait :
2 4 6 8 10
Méthode flatMap()
La méthode flatMap() applique également la fonction spécifiée à chaque élément du flux d'entrée, mais elle ne produit pas de nouveau flux de résultats. Au lieu de cela, il combine les résultats de l'application de la fonction à chaque élément dans un seul flux.
Par exemple, l'extrait de code suivant utilise flatMap() pour concaténer les caractères individuels d'une liste de chaînes dans un nouveau flux :
List<String> words = Arrays.asList("hello", "world", "java"); words.stream() .flatMap(word -> Arrays.stream(word.split(""))) .forEach(System.out::println);
La sortie de ce code serait :
h e l l o w o r l d j a v a
Différence clé
La différence clé entre map() et flatMap( ) est que map() produit un nouveau flux de valeurs, tandis que flatMap() produit un flux aplati qui combine les résultats de l'application de la fonction à chaque élément.
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!