Stream 转map,键或值为空报空指针问题处理?

 


问题

map的key和value通过对象::方法或对象.方法。

list.stream().collect(Collectors.toMap(UserCacheInfoBO::getEmployeeNumber, UserCacheInfoBO::getUsername, (value1, value2) -> value1));

list.stream().collect(Collectors.toMap(e->e.getEmployeeNumber(), e->e.getUsername(), (value1, value2) -> value1));

缺点:value值不能为空,否则会报空指针错误。

 

如何过滤value为空的情况?

方法一:使用Optional对空值进行处理

1
2
3
4
list.stream().collect(Collectors.toMap(
                    x -> Optional.ofNullable(x).map(Student::getName).orElse(""),
                    x -> Optional.ofNullable(x).map(Student::getPetName).orElse(""),
                    (a, b) -> StringUtils.isNotBlank(a) ? a : b));

  

方法二:

1
2
3
Map<String, String> collect1 = list.stream().collect(Collectors.toMap(x -> x.getName(),
                    x -> Objects.nonNull(x.getPetName()) ? x.getPetName() : "",
                    (a, b) -> StringUtils.isNotBlank(a) ? a : b));

  

 

 

 
posted @   r1-12king  阅读(1430)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
历史上的今天:
2020-05-09 卡特兰数
2020-05-09 并查集 python实现
2020-05-09 并查集原理
点击右上角即可分享
微信分享提示