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)); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
2020-05-09 卡特兰数
2020-05-09 并查集 python实现
2020-05-09 并查集原理