场景
在使用Collectors.groupingBy分组时,如果分组的字段中有值为null,会抛出空指针异常
例如:
// An highlighted block
calss User{private Integer age;private String sex;
}public static void main(String[] args){User user1 = new User(18, "女");User user2 = new User(19, "女");User user3 = new User(20, "男");//没有性别的人需要用null表示User user4 = new User(18, null);groupBy(Arrays.aslist(user1,user2,user3,user4))}
//对用户按照年纪分组
public void groupBy(List<User> userList){//此时这里会抛出空指针异常Map<String, List<User>> userMap = userList.stream.collect(Collectors.groupingBy(x -> x.getSex()));
}
解决方案
public void groupBy(List<User> userList){//使用option包装一层Map<Option<String>, List<User>> userMap = userList.stream.collect(Collectors.groupingBy(x -> Optional.ofNullable(x.getSex())));
}