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

这篇具有很好参考价值的文章主要介绍了Java stream流toMap使用过程中空指针问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java8中stream操作list时常见的一个错误:

Java stream流toMap使用过程中空指针问题,BUG追踪,java,开发语言

排查原因:

定位到代码中发现从数据查询是存在数据的

Java stream流toMap使用过程中空指针问题,BUG追踪,java,开发语言

排查stream前对象为null的情况,那问题只能出现在toMap这里了

我们需要知道toMap是怎么帮我们封装数据的,先搞明白toMap的原理,点击源码可以看到他并不是通过map中的put方法封装数据,而是使用的merge,那么merge又是个什么东西呢???

Java stream流toMap使用过程中空指针问题,BUG追踪,java,开发语言

接着往下看,看到这先别着急研究,源码上面都有相关注释

Java stream流toMap使用过程中空指针问题,BUG追踪,java,开发语言

查看当前方法上面的注释信息,在注释这里看到一个关键的词NullPointerException,这不就是我们出现的问题吗?往后看后面的解释,在注释就明确说了,key值和value值都不能为null

Java stream流toMap使用过程中空指针问题,BUG追踪,java,开发语言

最后我们只需去数据库验证当前查询出的数据是否存在为null的情况

Java stream流toMap使用过程中空指针问题,BUG追踪,java,开发语言

通过对应sql,从数据库查询结果看有条数据值为null,因此在toMap的时候报错

解决方式:

1、如果这条数据是垃圾数据,直接删掉就好了

2、在使用toMap前过滤数据,可以使用stream的filter把空值过滤掉,或者使用removeIf文章来源地址https://www.toymoban.com/news/detail-753788.html

到了这里,关于Java stream流toMap使用过程中空指针问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA8新特性stream流收集为Map,value为null导致空指针的问题

    jdk8 新特性stream深受喜爱,平时使用比较多,其中有: MapString, String collect2 =  list.stream().collect(Collectors.toMap(Book::getName, Book::getIdNO,(pre, after) - pre));  现象如下: 问题:JDK8环境下,如果Book::getIdNo 为null的话会报空指针,即JDK8环境下的,该接口不支持value为null(key为null没这个问

    2024年02月06日
    浏览(68)
  • Java解决stream流Collectors.groupingBy 分组统计可能报空指针异常

    在使用stream流的Collectors.groupingBy做分组统计时(示例代码如下) 如果统计的字段userName有null值则会报如下错误 解决方法为在统计之前增加一个filter方法将null值事先过滤掉。代码如下:

    2024年02月04日
    浏览(66)
  • Java——list.stream().filter(item -> item.getType().equals(“type”)).findFirst()报空指针

    在Java中使用 list.stream().filter(item - item.getType().equals(type)).findFirst() 方法链时,出现空指针异常(NullPointerException)的原因可能是: 检查 list 是否已经正确初始化,确保其不为null。如果 list 为null,调用 stream() 方法时会导致空指针异常。 在Lambda表达式中调用 item.getType() 时, i

    2024年02月07日
    浏览(44)
  • 【JAVA】云HIS系统使用和操作过程中的常见问题及解决方法

    一、门诊业务中遇到的问题 (1)门诊医生如何查询往期病人? 答: 点击门诊医生站左侧患者列表,在弹出的页面点击已诊分页,在搜索框输入患者姓名,在结果中找到对应患者,点击详情按钮即可查询患者往期就诊信息,点击想要查询的门诊记录前方的方框即可查询相应的

    2024年02月16日
    浏览(55)
  • Collectors.toMap使用详解

    在实际项目中我们经常会有 List 转 Map 操作,在过去(JAVA8以前)我们可能使用的是 for 循环遍历的方式,这种方式就不做过多赘述。这里主要讲解使用 Collectors.toMap 方式及使用过程需注意的地方,避免踩坑 三个重载的方法如下: 参数含义分别是: keyMapper:Key 的映射函数。 va

    2024年02月11日
    浏览(47)
  • Golang 中空的切片转化成 JSON 后变为 null 的问题如何解决?

    目录 问题 原因 小结 在 Golang 中,经常需要将其他类型(例如 slice、map、struct 等类型)的数据转化为 JSON 格式。有时候转化的结果并不是预期中的,例如将一个空的切片转化为 JSON 时,会变成\\\"null\\\",而并非预期的\\\"[]\\\"。示例代码如下: 运行示例看下结果: 结果输出的值为 “

    2024年02月07日
    浏览(45)
  • Collectors.toMap()的基本使用方法

    介绍: 1、Java 8 流的新类 java.util.stream.Collectors 实现了 java.util.stream.Collector 接口,同时又提供了大量的方法对流 ( stream ) 的元素执行 map and reduce 操作,或者统计操作; 2、Collectors.toMap()是Java8引入的流特性,可以把集合转换为Map集合,转换对象中的key不可重复,重复会报错;

    2024年02月10日
    浏览(62)
  • 项目bug——编码问题报错(java.lang.IllegalStateException)

    项目拉下后报错 2023-07-17 14:26:07.596 ERROR 14300 — [ main] o.s.boot.SpringApplication : Application run failed java.lang.IllegalStateException: Failed to load property source from ‘file:/Users/wang/IdeaProjects/ms-family-pre/target/classes/application.yaml’ (classpath:/application.yaml) at org.springframework.boot.context.config.ConfigFileAppl

    2024年02月16日
    浏览(53)
  • java8新特性之toMap的用法——全网独一无二的通俗易懂的讲解

    对于java8的新特性toMap方法,相信有很多人都在工作中用过,接下来就通俗易懂的讲解一下toMap吧 先来看看官网对于toMap方法的解释 toMap有个三个重载的方法,每一个重载方法的详解分别如下 (1)方法1:两个参数 public static T, K, U Collector T, ?, MapK,U toMap(Function? super T, ? extends

    2024年02月08日
    浏览(61)
  • 详细解决java中的Collectors.toMap引起的java.lang.IllegalStateException: Duplicate key xxx 的错误

    今天,测试在禅道上给我指出一个正式环境 bug ,如下图所示: 即 java.lang.IllegalStateException: Duplicate key 2 。 根据 java.lang.IllegalStateException: Duplicate key 2 可知,这是 java 抛出的存在 2个重复键 的错误。 如果想要弄清楚错误原因,通过如下几个步骤分析: 首先,看到这个错误信息

    2024年01月19日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包