当Stream的Collectors.groupingBy遇到Key为Null时

  • Post author:
  • Post category:其他



目录


前言


一、存在问题


二、解决方法




前言

工作中会遇到LIst数据分类情况,或者统计之类的业务需求。使用普通的for循环可以解决,也可以用下Stream提供的方式来实现它。



一、存在问题

在使用Collectors.groupingBy分组时,如果分组的字段中有值为null,会抛出空指针异常。



二、解决方法



@Data
public class Student {

    // 姓名
    private String name;

    // 年纪
    private int age;

    // 性别
    private int sex;

    // 班级
    private String calss;

    // 课外班
    private String outsideClass;

}

List<Student> list = new ArrayList<>();
        //list.stream().collect(Collectors.groupingBy(Student::getOutsideClass));
        // 解决方案如下,在ofNullable后面加orElse就可以转换为String类型
        list.stream().collect(Collectors.groupingBy(x -> Optional.ofNullable(x.getOutsideClass()).orElse("0")));



版权声明:本文为I_am_peanut原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。