实体类
package com.example.demo.entity; public class Person { private Integer age; private String name; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Person(Integer age, String name) { this.age = age; this.name = name; } @Override public String toString() { return "Person{" + "age=" + age + ", name='" + name + ''' + '}'; } }
测试类
@Test void contextLoads() { ListpersonList = new ArrayList<>(); personList.add(new Person(1,"")); personList.add(new Person(3,"")); personList.add(new Person(4,"小红")); Map > groups = personList.stream().collect(Collectors.groupingBy(ele -> ele.getName(), Collectors.mapping(Function.identity(), Collectors.toList()))); groups.forEach((k,v)->{ if(k.isEmpty()){ System.out.println(k+"ok===" + v); }else{ System.out.println(k+"===" + v); } }); System.out.println(groups); System.out.println("============================"); List people = new ArrayList<>(); people.add(new Person(1,null)); people.add(new Person(3,"")); people.add(new Person(4,"小红")); Map , List > group = people.stream().collect(Collectors.groupingBy(ele -> Optional.ofNullable(ele.getName()), Collectors.mapping(Function.identity(), Collectors.toList()))); group.forEach((k,v)->{ if(k.filter(e->e.isEmpty()).isPresent()){ System.out.println(k+"ok===" + v); }else{ System.out.println(k+"===" + v); } }); System.out.println(group); }
注意:
使用groupBy的时候一定要确保分组的字段不是null的,可以是empty但是不能是null,否则会报错,如下图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)