当前位置: 首页 > article >正文

关于我在使用stream().toList()遇到的问题

关于我在使用stream().toList()遇到的问题

问题描述


在测试以上程序的时候抛出了空指针异常

于是我以为是我数据库中存在null字段,但查看后发现并不存在为null的数据

问题排查

起初我以为问题出现在sort排序方法这,事实也确实是,当我把sort语句去掉的时候程序就跑通了,但我想不明白是为什么,于是我对每次对比都加上一个非空判断但程序仍然报错。我猜问题应该不出在这里。然后我往前找问题最终发现问题出在这条语句上

 courseSelections = courseSelections.stream().filter(o->o.getScore().compareTo(BigDecimal.ZERO)>0).toList();

问题解决

原因:从java16开始Stream.toList() 返回不可变集合
由于我前面使用的是toList()方法返回集合,所以我courseSelections是不可变的,因此我在进行排序的时候会抛出异常。


解决方法:

//将toList() 改为collect(Collectors.toList())courseSelections = courseSelections.stream().filter(o->o.getScore().compareTo(BigDecimal.ZERO)>0).collect(Collectors.toList());

这样修改之后就不存在之前的错误了,因为collect(Collectors.toList())返回的是可变集合

疑问+1

如果只有以上问题的话应该抛出的是UnsupportedOperationException这个异常,但是为什么我的是null呢,难道我其他地方存在空指针问题吗?其实并不是,是因为我的项目里的全局异常处理器作了简化处理

当我把这个处理器去掉

确实是UnsupportedOperationException异常

http://www.lryc.cn/news/2379978.html

相关文章:

  • javascript 编程基础(2)javascript与Node.js
  • Spring Boot 集成 druid,实现 SQL 监控
  • 多卡跑ollama run deepseek-r1
  • HTML向四周扩散背景
  • 基于Java在高德地图面查询检索中使用WGS84坐标的一种方法-以某商场的POI数据检索为例
  • 使用 Terraform 创建 Azure Databricks
  • 本地部署dify+ragflow+deepseek ,结合小模型实现故障预测,并结合本地知识库和大模型给出维修建议
  • SECERN AI提出3D生成方法SVAD!单张图像合成超逼真3D Avatar!
  • 深入探索:Core Web Vitals 进阶优化与新兴指标
  • c/c++的opencv开闭操作
  • 【物联网】 ubantu20.04 搭建L2TP服务器
  • winrar 工具测试 下载 与安装
  • PLC组网的方法、要点及实施全解析
  • 网络安全深度解析:21种常见网站漏洞及防御指南
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit (3)
  • Java大厂面试实战:Spring Boot与微服务场景中的技术点解析
  • 从零启动 Elasticsearch
  • 比较两个用于手写体识别的卷积神经网络(CNN)模型
  • Linux利用多线程和线程同步实现一个简单的聊天服务器
  • 【计网】作业5
  • 15、Python布尔逻辑全解析:运算符优先级、短路特性与实战避坑指南
  • Nginx基础知识
  • Vue-监听属性
  • python fastapi + react, 写一个图片 app
  • nginx集成防火墙ngx_waf的docker版
  • vscode c++编译onnxruntime cuda 出现的问题
  • sts下载安装
  • 中服云生产线自动化智能化调度生产系统:打造智能制造新标杆
  • next.js实现项目搭建
  • Redisson 四大核心机制实现原理详解