Collectors.mapping

简介: Collectors.mapping

胜人者有力,自胜者强。——先秦《老子》

今天发现了Collectors.mapping的正确姿势

使用场景如下:

我想要对一个List进行groupBy

class User {
         private String name;
         private Integer age;
         public String getName() {
             return name;
         }
         public void setName(String name) {
             this.name = name;
         }
         public Integer getAge() {
             return age;
         }
         public void setAge(Integer age) {
             this.age = age;
         }
         public User(String name, Integer age) {
             this.name = name;
             this.age = age;
         }
     }
     List<User> users = Arrays.asList(new User("ruben", 18), new User("vampire", 18));
     Map<Integer, List<User>> ageUsersMap = users.stream().collect(Collectors.groupingBy(User::getAge));

实际上,我只需要此处Username,我希望得到的是一个List>这样结构的数据

这时候,Collectors.mapping就出现啦!

Map<Integer, List<String>> ageNamesMap = users.stream().collect(Collectors.groupingBy(User::getAge, Collectors.mapping(User::getName, Collectors.toList())));

这里使用了

Collectors.groupingBy(Function<? super T, ? extends K> classifier, Collector<? super T, A, D> downstream)

第二个参数就是说你分组之后还想做一些后续处理,例如根据age分组后再根据name分组一次,或者我这里的,分组后,使用

Collectors.mapping(User::getName, Collectors.toList())

可以在分组后再获取其中属性,或者还可以进行别的计算如分组后再根据每一组内获取最大值等

相关文章
Stream方法使用-filter、sorted、distinct、limit
Stream方法使用-filter、sorted、distinct、limit
132 0
|
SQL Java 数据库连接
mybatis 使用foreach时出现“The expression ‘list‘ evaluated to a null value“问题
mybatis 使用foreach时出现“The expression ‘list‘ evaluated to a null value“问题
1689 3
|
5月前
|
存储 SQL Java
|
8月前
|
Python
list()与tolist()区别
python库方法list()与tolist()区别
131 0
|
自然语言处理 Java
Java8 stream collect Map集合
Java8 stream collect Map集合
191 0
|
Java
Java集合Stream类filter的使用
Java集合Stream类filter的使用
155 0
|
数据库 容器
使用Stream流对集合排序
有一些业务需要对集合按照一些规则进行排序,本篇介绍如何用Stream()对集合进行升序或者降序操作。之前只有接触过使用数据库进行排序,有一些情况需要不同的排序结果,如果进行多次查询会多次操作数据库,所以有些地方使用流对集合操作是更好的选择。Stream 流 -> 调用 sorted 方法 -> 方法内传入对比规则,用容器对象的属性作为入参作为排序依据,默认升序,需要倒叙的话后面调用.reversed() 方法。
784 0
使用Stream流对集合排序
Comparable和Comparator有什么区别?你知道他们和Arrays.sort的关系吗?
Comparable和Comparator有什么区别?你知道他们和Arrays.sort的关系吗?
117 0
|
JavaScript
map、filter和reduce
map、filter和reduce
94 0