java8 flatmap
天蓬老师
天蓬老师 2017-04-18 09:59:19
0
3
410

java8 stream 的 flatmap 跟map有啥区别?有例子不

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(3)
伊谢尔伦

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())
)))

PHPzhong

Par exemple, une carte List<?>, peut exploiter directement chaque objet de la liste

List<Integer> integers = new ArrayList<>();
//添加数据略
integers.stream.map(i -> i + 1).foreach(System.out::println);

L'utilisation de flatmap nous permet d'exploiter des niveaux de données plus profonds, comme suit :
List<List<?>>


List<List<Integer>> outer = new ArrayList<>();
List<Integer> inner1 = new ArrayList<>();
inner1.add(1);
List<Integer> inner2 = new ArrayList<>();
inner1.add(2);
List<Integer> inner3 = new ArrayList<>();
inner1.add(3);
List<Integer> inner4 = new ArrayList<>();
inner1.add(4);
List<Integer> inner5 = new ArrayList<>();
inner1.add(5);
outer.add(inner1);
outer.add(inner2);
outer.add(inner3);
outer.add(inner4);
outer.add(inner5);
List<Integer> result = outer.stream().flatMap(inner -> inner.stream().map(i -> i + 1)).collect(toList());
System.out.println(result);
左手右手慢动作

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 :

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal