Java集合的ConcurrentModificationException
2024-09-27 22:52:11
简单复习一下集合顺带提一下这个错误,其实也比较常见,大多是因为疏忽的原因吧;
我们创建一个集合,添加了一些元素,使用迭代器来遍历,然后遍历途中需要进行一些逻辑操作,对集合进行修改,然后就报错了,这是什么原因呢?
集合是集合,迭代器是迭代器,两个不是同一个东西,可以把迭代器理解为集合的一个快照或副本,当两者的内容不一致的时候,就抛出 new ConcurrentModificationException();
源码中不难发现:
而上面那两个变量就是判断集合改变而定义的count
public static void main(String[] args) {
Collection list = new ArrayList<>();
list.add("xiaowang");
list.add("dawang");
list.add("laowang");
System.out.println(list.toString()); Iterator iterator = list.iterator();
while (iterator.hasNext()) {
String s = (String) iterator.next();
if (s.equals("xiaowang")) {
list.add("gebilaowang");
}
}
最新文章
- git 远程库命令
- cocos2d-x在Android平台下的音频导致的卡死
- aop注解
- PeopleSoft登录流程
- .net 高效管理稀缺资源(数据库资源,文件资源等)
- (转)SqlServer2008 数据库同步的两种方式 (发布、订阅)
- [转载]在網頁上加入HTML5 的Video Tag,直接播放MP4、OGG…等
- I.MX6 Android Linux shell MMPF0100 i2c 设置数据
- screen space directional occlusion(SSDO) in Unity5
- Excel.Application SaveAs 把excel转换为html
- css样式float造成的浮动“塌陷”问题的解决办法
- 打印org.eclipse.xsd.XSDSchema对象
- Centos6.3不能使用yum install安装gcc编辑器解决办法
- angular学习(一)-- Expression
- 与webview打交道踩过的坑
- laravel 表单方法伪造
- 【Spark工作原理】stage划分原理理解
- SpringBoot配置文件的加载位置
- 【Eclipse使用】在eclipse里添加源文件和Api的方法
- 对于java自定义的工具类的提炼 注意事项
热门文章
- 洛谷 P3835: 【模板】可持久化平衡树
- numpy之ones,array,asarray
- docker制作镜像步骤
- 【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)
- MVVM模式的 数据绑定
- unity 欧拉旋转
- 29 A Quick Guide to Go&#39;s Assembler 快速指南汇编程序:使用go语言的汇编器简介
- 应用服务器中对JDK的epoll空转bug的处理
- Java事务管理之Hibernate
- Sqlserver双机热备文档(无域)