flatmap peut renvoyer une collection dans lambda, puis placer à plat les éléments individuels dans l'ensemble de résultats final, un par un. Par exemple, s'il y a plusieurs passe-temps (List<Hobby>) dans Personne, alors je veux obtenir tous les passe-temps de tout le monde, alors je peux : List<Person> Set<Hobby> hobbySet = personnes.parallelStream().flatMap(p -> p.getHobbyList.stream()) .collect(Collectors.toCollection(() -> new TreeSet<Hobby>( (h1,h2 ) -> h1.getName().compareTo(h2.getName()) )))
map : utilisez la fonction de conversion donnée pour effectuer des opérations de conversion sur les éléments contenus dans le Stream. Le Stream nouvellement généré ne contient que les éléments générés par la conversion. Cette méthode comporte trois variantes de méthodes pour les types primitifs : mapToInt, mapToLong et mapToDouble. Ces trois méthodes sont également relativement faciles à comprendre. Par exemple, mapToInt convertit le Stream d'origine en un nouveau Stream. Les éléments de ce Stream nouvellement généré sont tous de type int. La raison pour laquelle il existe trois méthodes variantes est d'éviter la consommation supplémentaire de boxing/unboxing automatique
;
diagramme de la méthode cartographique :
flatMap : similaire à map, sauf que chaque élément est converti en un objet Stream et que les éléments du Stream enfant seront compressés dans la collection parent
flatmap peut renvoyer une collection dans lambda, puis placer à plat les éléments individuels dans l'ensemble de résultats final, un par un.
Par exemple, s'il y a plusieurs passe-temps (List<Hobby>) dans Personne, alors je veux obtenir tous les passe-temps de tout le monde, alors je peux :
List<Person> Set<Hobby> hobbySet = personnes.parallelStream().flatMap(p -> p.getHobbyList.stream())
.collect(Collectors.toCollection(() -> new TreeSet<Hobby>(
(h1,h2 ) -> h1.getName().compareTo(h2.getName())
)))
Par exemple, une carte List<?>, peut exploiter directement chaque objet de la liste
L'utilisation de flatmap nous permet d'exploiter des niveaux de données plus profonds, comme suit :
List<List<?>>
map : utilisez la fonction de conversion donnée pour effectuer des opérations de conversion sur les éléments contenus dans le Stream. Le Stream nouvellement généré ne contient que les éléments générés par la conversion. Cette méthode comporte trois variantes de méthodes pour les types primitifs : mapToInt, mapToLong et mapToDouble. Ces trois méthodes sont également relativement faciles à comprendre. Par exemple, mapToInt convertit le Stream d'origine en un nouveau Stream. Les éléments de ce Stream nouvellement généré sont tous de type int. La raison pour laquelle il existe trois méthodes variantes est d'éviter la consommation supplémentaire de boxing/unboxing automatique
;diagramme de la méthode cartographique :
flatMap : similaire à map, sauf que chaque élément est converti en un objet Stream et que les éléments du Stream enfant seront compressés dans la collection parent
Diagramme de la méthode flatMap :