Java stream流toMap使用过程中空指针问题
2023-12-13 14:50:06
Java8中stream操作list时常见的一个错误:
排查原因:
定位到代码中发现从数据查询是存在数据的
排查stream前对象为null的情况,那问题只能出现在toMap这里了
我们需要知道toMap是怎么帮我们封装数据的,先搞明白toMap的原理,点击源码可以看到他并不是通过map中的put方法封装数据,而是使用的merge,那么merge又是个什么东西呢???
接着往下看,看到这先别着急研究,源码上面都有相关注释
查看当前方法上面的注释信息,在注释这里看到一个关键的词NullPointerException,这不就是我们出现的问题吗?往后看后面的解释,在注释就明确说了,key值和value值都不能为null。
最后我们只需去数据库验证当前查询出的数据是否存在为null的情况
通过对应sql,从数据库查询结果看有条数据值为null,因此在toMap的时候报错
解决方式:
1、如果这条数据是垃圾数据,直接删掉就好了
2、在使用toMap前过滤数据,可以使用stream的filter把空值过滤掉,或者使用removeIf
文章来源:https://blog.csdn.net/m0_55051386/article/details/134964834
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!