关于报错java.util.ConcurrentModificationException: null的源码分析和解决
一般有这种问题,方法中至少会有List或者Map下的至少两个子类,有可能参数类型相同,也有可能不同都有可能触发这个问题!其主要原因是使用了ArrayList进行删除操作或者使用iterator遍历集合的同时对集合进行修改都有可能会出现这个问题
ArrayList属于List下的子类
需要区分的是List在java中有两个属于两个不同的包,这里说的是Util包下的List!两个类一个是接口一个是Class类(基础知识了吧算是)

针对此问题的ArrayList源码解析https://blog.csdn.net/qq_43705131/article/details/122607384
问题截图及源码触发部分代码

业务问题代码

不管泛型使用的是同种参数还是不同参数都要注意这个问题
场景复现
业务场景:
需要一个接口返回一个List对象,但是在List中需要调用另一个接口并将该接口的返回结果插入List中(如上图代码注释所写)
这时候类型的兼容性问题就出现了
代码场景:
首先:调用接口返回一个集合,需要集合中的全部数据及拿到集合中的ID
List<Map<String, List>> periodicLQ = periodicObservationMapper.periodicLQ(pointId,dir, lineNo, startDate, endDate);
用于调用另一个接口查询该ID下的全部值并且赋到一个List中用于返回
List structureDetailInfo = structureDetailInfoMapper.selectByPavementStructureInfoIds(ids);
代码实现:(问题复现)
这样写在List structureDetailInfo = structureDetailInfoMapper.selectByPavementStructureInfoIds(ids);
{//查询结构内 基本数据及 联合数据 ,返回统计结果 拿到structure_info 的 ID拿到结构数据将此以数组返回到VOList<Map<String, List<StructureDetailInfoPO>>> periodicLQ = periodicObservationMapper.periodicLQ(pointId,dir, lineNo, startDate, endDate);Map<String, List<StructureDetailInfoPO>> structureInfo = new HashMap<>();//用于存储接口获取到的所有id值List<Long> ids = new ArrayList<>();for (Map<String, List<StructureDetailInfoPO>> item: periodicLQ) {if (!item.isEmpty()){Long id = Long.valueOf(String.valueOf(item.get("id")));ids.add(id);for (int i = 0;i <= item.size();i++){List<StructureDetailInfoPO> structureDetailInfo = structureDetailInfoMapper.selectByPavementStructureInfoIds(ids);structureInfo.put("structureInfo",structureDetailInfo);//System.out.println(" structure detail info size : " + structureDetailInfo);//resultMap.add(structureInfo);}result.add(item);//result.add(structureInfo);//break;}System.out.println(" result size : " + result);}return result;}
解决方案–>避免修改ArrayList或者引用的其他List类和Map中的子类
创建一个名为 resultMap 的临时列表,并在循环中将结构信息添加到该列表中。最后,我们返回 resultMap 列表,而不是修改 result 列表用于返回。这就能够解决 ConcurrentModificationException 异常的问题,因为这样就创建了一个中间变量用来存储结果,避免修改了原来的result列表(List)
{//查询结构内 基本数据及 联合数据 ,返回统计结果 拿到structure_info 的 ID拿到结构数据将此以数组返回到VOList<Map<String, List<StructureDetailInfoPO>>> periodicLQ = periodicObservationMapper.periodicLQ(pointId,dir, lineNo, startDate, endDate);List<Map<String, List<StructureDetailInfoPO>>> resultMap = new ArrayList<>();Map<String, List<StructureDetailInfoPO>> structureInfo = new HashMap<>();//用于存储接口获取到的所有id值List<Long> ids = new ArrayList<>();for (Map<String, List<StructureDetailInfoPO>> item: periodicLQ) {if (!item.isEmpty()){Long id = Long.valueOf(String.valueOf(item.get("id")));ids.add(id);for (int i = 0;i <= item.size();i++){if (i == item.size()){List<StructureDetailInfoPO> structureDetailInfo = structureDetailInfoMapper.selectByPavementStructureInfoIds(ids);structureInfo.put("structureInfo",structureDetailInfo);//System.out.println(" structure detail info size : " + structureDetailInfo);}else {continue;}//resultMap.add(structureInfo);}resultMap.add(item);resultMap.add(structureInfo);//break;}System.out.println(" result size : " + resultMap);}return resultMap;}
:w最后总结:
代码中有
Long id = Long.valueOf(String.valueOf(item.get(“id”)));
在写这个的时候,一开始用了toString,编译不报错但运行有错,也建议大家使用这种包围的方法取代.***的方法(这种问题一定会随着jdk的不断更新有所改正)
此外在对断点进行一步步跟踪到源代码时发现的问题触代码如下
如图所示我们在读过SQLsession等常规源码后发现代码执行到了此类中,并确认了SQL是否执行正确

在左下角即为控制程序执行的断点按钮,可以手动点击||,这样resume按钮就会变绿变亮

问题触发代码:↓↓↓

相关文章:
关于报错java.util.ConcurrentModificationException: null的源码分析和解决
一般有这种问题,方法中至少会有List或者Map下的至少两个子类,有可能参数类型相同,也有可能不同都有可能触发这个问题!其主要原因是使用了ArrayList进行删除操作或者使用iterator遍历集合的同时对集合进行修改都有可能会出现这个问题 ArrayList属于List下的子类 需要区分的是Li…...
使用koa搭建服务器(一)
最近有个需求需要使用到koa搭建服务器并编写接口对数据库进行增删改查,因此写一篇博客记录这段时间的收获。 一、新建koa项目 (一)安装koa及其相关依赖 npm i koa npm i koa-router// 中间件,用于匹配路由 npm i koa-bodyparse…...
echarts的柱状图的重叠和堆叠实现两个柱体的显示和之前的差值显示
效果图 主要思路 准备三个柱体(原计划,实际进度,差值) 原计划和实际进度设置成重叠 {barWidth: 20,// yAxisIndex: 1,z: 1,name: 原计划,type: bar,stack: ab,emphasis: { // 点击柱体其他柱体颜色会变浅disabled: true},label…...
泛积木-低代码 使用攻略
文档首发于 泛积木-低代码 使用攻略 我们以大纲的方式(总体把握)讲述如何高效、便捷使用 泛积木-低代码。 权限 首先说下权限,在 系统设置 / 权限设置 菜单内,我们可以新增调整项目内的权限,默认拥有管理员和成员两…...
红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远控介绍及界面编写
红队专题 招募六边形战士队员[1]远控介绍及界面编写1.远程控制软件演示及教程简要说明主程序可执行程序 服务端生成器主机上线服务端程序 和 服务文件管理CMD进程服务自启动主程序主对话框操作菜单列表框配置信息 多线程操作非模式对话框 2.环境:3.界面编程新建项目…...
机器学习(五)如何理解机器学习三要素
1.8如何理解机器学习三要素 统计学习模型策略算法 模型:规律yaxb 策略:什么样的模型是好的模型?损失函数 算法:如何高效找到最优参数,模型中的参数a和b 1.8.1模型 机器学习中,首先要考虑学习什么样的…...
【计算机视觉】3D视觉
文章目录 一、基本问题二、三个坐标系 X w \boldsymbol{X}_w Xw到 X c \boldsymbol{X}_c Xc的转换 X c \boldsymbol{X}_c Xc到 x i \boldsymbol{x}_i xi的转换投影矩阵尺度模糊问题 三、相机标定四、立体视觉 我的《计算机视觉》系列参考UC Berkeley的CS180课程&#x…...
策略路由和路由策略
目录 策略路由 路由策略 策略路由和路由策略 策略路由 Step1:配置ACL,匹配流量 acl number 2010 rule 10 permit source 192.168.10.0 0.0.0.255 acl number 2020 rule 10 permit source 192.168.20.0 0.0.0.255 Step2:流分类traffic classifier jiaoxue //匹配…...
[动态规划] (一) LeetCode 1137.第N个泰波那契数
[动态规划] (一) LeetCode 1137.第N个泰波那契数 文章目录 [动态规划] (一) LeetCode 1137.第N个泰波那契数题目解析解题思路状态表示状态转移方程初始化和填表顺序返回值 代码实现总结空间优化代码实现 总结 1137. 第 N 个泰波那契数 题目解析 解题思路 状态表示 (1) 题目要…...
SystemVerilog语法中,在Class中引用层次化信号
在class中可以像在verilog中一样,直接在class中引用层次化信号。示例如下: 1.DUT模块,文件名为top.v。 module top (input clk ,input rst_n ,//总线信号 input wr_n ,input rd_n ,input cs0_n ,input cs7_n …...
磁盘的结构(磁道,扇区,盘面,柱面,物理地址)
目录 1.磁盘、磁道、扇区的概念1.磁盘2.磁道3.扇区 2.如何在磁盘中读/写数据3.盘面、柱面的概念4.磁盘的物理地址1.根据地址读取一个“块” 5.磁盘的分类1.活动头磁道2.固定头磁盘3.根据盘片是否可更换 1.磁盘、磁道、扇区的概念 1.磁盘 磁盘的表面由一些磁性物质组成…...
uni-app集成uni-simple-router,报错:Uncaught ReferenceError: ROUTES is not defined
参考连接:GitHub - SilurianYang/uni-read-pages: read pages.json file to generate the routes table 作用:配置 vue.config.js 通过 webpack注入全局变量 问题:缺少Webpack 配置环境 方法: 项目根目录下打开终端,…...
几个常用的nosql数据库的操作方式
dynamoDB 键 partition key:分区键 定义:分区键是用于分布数据存储的主键,每个项(Item)在表中都必须有一个唯一的分区键值。 特点: 唯一性:每个分区键值在表中必须是唯一的,这是因为…...
如何使用 nvm-windows 这个工具来管理你电脑上的Node.js版本
nvm-windows 是一个用于管理在 Windows 上安装的多个 Node.js 版本的工具。以下是安装和使用 nvm-windows 的步骤: 第1步:下载 nvm-windows 访问 nvm-windows 的 GitHub发布页面.下载最新版本的 nvm-setup.zip 文件。 第2步:安装 nvm-wind…...
公司电脑禁用U盘的方法
公司电脑禁用U盘的方法 安企神U盘管理系统下载使用 在这个复杂的数据时代,保护公司数据的安全性至关重要。其中,防止未经授权的数据泄露是其中的一个关键环节。U盘作为一种常用的数据传输工具,也成为了潜在的安全风险。因此,公司…...
Elasticsearch 7.X版本常用语法语句
文章目录 监控相关 API查看健康状况查看所有节点查看所有节点详细信息查看主节点查看所有索引查看所有分片 索引管理创建索引查看索引查看索引字段类型修改索引字段删除索引别名给索引添加别名查询某个索引下的别名给索引更换别名给索引解绑别名一个别名绑定多个索引查询index_…...
Python分享之数学与随机数 (math包,random包)
我们在Python运算中看到Python最基本的数学运算功能。此外,math包补充了更多的函数。当然,如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy项目,它们不但支持数组和矩阵运算,还有丰富的数学和物理方…...
Linux 基本语句_8_C语言_文件控制
为了解决多个进程同时操作一个文件,产生一些情况,通常对文件进行上锁,已解决对共享文件的竞争 对打开文件进行各种操作: int fcentl(int fd, int cmd, .../*arg*/如果cmd与锁操作有关,那么fcentl函数的第三个参数就要…...
博通BCM575系列 RDMA 网卡驱动 bnxt_re 分析(一)
简介 整个BCM系列驱动分成以太网部分(bnxt_en.ko)和RDMA部分(bnxt_re.ko), 两个模块之间通过内核的auxiliary_bus进行管理.我们主要分析下bnxt_re驱动. 代码结构 这个驱动的核心是 qplib_fp.c, 这个文件主要包含了驱动的数据路径, 包括Post Send, Post Recv, Poll CQ流程的实…...
ExcelPatternTool 开箱即用的Excel工具包现已发布!
文章目录 ExcelPatternTool功能特点:快速开始使用说明常规类型高级类型Importable注解Exportable注解IImportOption导入选项IExportOption导出选项单元格样式StyleMapping样式映射使用数据库作为数据源 示例Sample1:不同类型字段导出Sample2:…...
工业级大模型学习之路023:LangChain零基础入门教程(第六篇):重排序与高级检索策略
一、理论基础:为什么基础向量检索不够好?1.1 基础向量检索的核心痛点第 4 天实现的基础向量检索(也叫单阶段检索)虽然简单易用,但存在三个致命缺陷,导致工业级场景下回答准确率通常只有 60%-70%:…...
如何用Poppins解决多语言字体兼容性难题:从实战应用到技术架构
如何用Poppins解决多语言字体兼容性难题:从实战应用到技术架构 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins 当你的产品需要同时支持拉丁文和天城体文字时&#x…...
Lindy自动化不是IT部门的事!CIO亲述:如何用“业务-技术-合规”三权制衡模型锁定首期300万降本收益
更多请点击: https://intelliparadigm.com 第一章:Lindy自动化不是IT部门的事!CIO亲述:如何用“业务-技术-合规”三权制衡模型锁定首期300万降本收益 Lindy自动化(Lindy Effect-driven Automation)的本质&…...
Unity风格化山脉管线:轮廓生成+分层材质+程序植被
1. 这不是“又一个山体素材包”,而是一套可工业化复用的风格化地形生产管线你有没有试过在Unity里拖进一个山体模型,调整光照后发现——它看起来像照片,但就是不像《原神》《空之轨迹》或者《Ori》里那种呼吸感十足的、带着手绘温度的山&…...
【反演】基于粒子群算法PSO进行反演附Matlab代码和报告
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 dz…...
终极Windows远程桌面解锁方案:RDP Wrapper Library完整配置指南
终极Windows远程桌面解锁方案:RDP Wrapper Library完整配置指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾因Windows家庭版无法支持多人远程桌面连接而感到困扰?RDP Wrapper L…...
论文写到一半卡壳了?师兄推荐这几个AI写作辅助软件
写论文最怕的就是卡壳,尤其是当思路混乱、资料繁杂、格式要求又高时,很容易陷入停滞。其实,论文写作的关键不在于苦熬,而在于用对工具、走对流程——不少资深教授都建议学生提前布局,借助 AI 工具提升效率。比如千笔AI…...
2026年B2B制造业GEO优化服务商推荐:工业品牌AI搜索可见度提升实战指南
摘要:B2B制造业的品牌营销与消费品逻辑完全不同——技术参数、行业资质、项目案例才是AI推荐的核心素材。本文从B2B行业理解深度、结构化内容能力、合规安全保障三个维度,对比泓动数据、百分点科技、赛诺贝斯、大树科技、Laver AI五家服务商在工业制造业…...
AI Agent测试不再黑盒:从Prompt覆盖率到行为一致性,5步构建可审计、可复现、可量化的工业级测试体系
更多请点击: https://kaifayun.com 第一章:AI Agent测试不再黑盒:从Prompt覆盖率到行为一致性,5步构建可审计、可复现、可量化的工业级测试体系 传统AI Agent测试常陷于“输入-输出”表层验证,缺乏对内部推理链、工具…...
AI Agent重构餐饮服务链:从排队超15分钟到响应<1.2秒的9大技术跃迁(行业首份效能白皮书)
更多请点击: https://kaifayun.com 第一章:AI Agent重构餐饮服务链:从排队超15分钟到响应<1.2秒的9大技术跃迁(行业首份效能白皮书) 传统餐饮服务链中,用户进店、点餐、支付、出餐、反馈等环节高度依赖…...
