List抛出ConcurrentModificationException
List抛出ConcurrentModificationException
在对 List 进行遍历的同时进行 remove 元素操作,可能会抛出
java.util.ConcurrentModificationException
异常
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
错误示范
- 在遍历 List 时获取元素实际上通过迭代器在进行,迭代器在获取下一个元素时会对 modCount 和 expectedCount 进行匹配
- 遍历的同时直接对 List 进行 remove 操作,会导致只有 modCount 发生变化,而expectedCount 未发生变化
- 所以迭代器在获取下一个元素会发现两个值不匹配则抛出
java.util.ConcurrentModificationException
异常
for (CourseDTO course : courses) { for (MemberCourseDTO memberCourse : memberCourses) { if (course.getId().equals(memberCourse.getCourse().getId())) { courses.remove(course); } } }
正确处理
- 使用迭代器原生的 remove 方法去操作 List 元素即可
for (Iterator<CourseDTO> it = courses.iterator(); it.hasNext(); ) { CourseDTO course = it.next(); for (MemberCourseDTO memberCourse : memberCourses) { if (course.getId().equals(memberCourse.getCourse().getId())) { // 移除当前元素 it.remove(); } } }
Java 8 的处理方式
question.getOptions().removeIf(option -> option.getContent().trim().equals(""));

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java + jQuery 实现阿里云点播
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82788154 Java + jQuery 实现阿里云点播 阿里云播放器直接在线点播视频以及直播技术,此处记录点播实现过程 更多精彩 更多技术博客,请移步 asing1elife’s blog 官网 获取阿里云视频播放凭证阿里云Aliplayer播放器 准备步骤 创建 阿里云账号 根据 流程 完成实名认证,以确保可以使用阿里云相应服务 在密钥管理页面获取阿里云访问密钥,AccessKeyId 和 AccessKeySecret 后端相关操作 在项目 pom 中引入所需 jar 包 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.2.2</version> </de...
- 下一篇
Javascript数组属性
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82796612 Javascript数组属性 Javascript数组可用来存储多个数组,但他也有些不常见的内置功能 更多精彩 更多技术博客,请移步 asing1elife’s blog 数组的真面目 数组的索引其实也是数组的属性,所以如下操作是等同的 let array = ['Tom', 'Jerry'] console.log(array[0]) => Tom console.log(array.0) => Tom 数组的内置属性 let array = ['Tom', 'Jerry'] console.log(array.length) => 2 console.log(array['length']) => 2 数组其实可以添加自定义属性,因为数组其实也是一个object对象 let array = ['Tom', 'Jerry'] array.itemName = ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池