Java stream流toMap使用过程中空指针问题

发布时间:2023年12月18日

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。