Stream的Collectors.groupingBy支持key为null进行分组
进行 支持 Key null 分组 stream collectors
2023-09-14 09:14:51 时间
场景
在使用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())));
}
相关文章
- SCrypt对密码进行加密及密码验证
- DT系统中tag如何使用like与%来进行模糊查询
- react native 如何用vs code 进行调试
- 选择的功能中没有任何功能可以安装或升级。由于不会对计算机进行有效更改,安装程序无法继续。若要继续,请单击“上一步”然后选择要安装的功能。若要退出 SQL Ser
- placeholder 不支持进行兼容处理
- ML之kNN:利用kNN算法对莺尾(Iris)数据集进行多分类预测
- ML之FE:Kaggle比赛之根据城市自行车共享系统数据进行FE+预测在某个时间段自行车被租出去的个数
- Tool之Adobe:解决Adobe acrobat pro将PDF文件进行批量保存单页PDF文件(图文教程)
- 基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习(Matlab代码实现)
- 【状态估计】将变压器和LSTM与卡尔曼滤波器结合到EM算法中进行状态估计(Python代码实现)
- 基于支持向量数据描述 (SVDD) 进行多类分类(Matlab代码实现)
- Windows, 使用命令行进行解压缩
- Netty自定义Encoder/Decoder进行对象传递
- 使用 xray 代理模式进行漏洞扫描——https扫描
- 在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。
- 基于SVM-支持向量机对鸢尾花数据进行分类
- 全干工程师神器 - Jmeter 08 - 如何利用Jmeter进行接口测试