场景
在使用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())));
}