关于java.util.ConcurrentModificationException异常
来源:互联网 发布:英语网络课程推荐 编辑:程序博客网 时间:2024/06/11 03:44
这是阿里的开发规范,【强制】
遵守该规范就可以避免该异常。
具体的解决办法:
- 用iterator来遍历集合,利用iterator的remove
- for循环倒着来遍历集合,再进行remove操作就没问题了
栗子:
import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Demo1 { /** * 不要在 foreach 循环里进行元素的 remove / add 操作。 * remove 元素请使用 Iterator方式 * 如果并发操作,需要对 Iterator 对象加锁。 * @param args */ public static void main(String[] args) { List<String> a = new ArrayList<String>(); a.add("2"); a.add("1"); a.add("3"); System.out.println("处理前:\n"+a); /*1、错误的*/ for (String temp : a) { if ("3".equals(temp)) {//修改这里的3为2或1查看结果; a.remove(temp); } } /*2、我就偏爱用for循环*/// for(int i=a.size()-1;i>=0;i--){// String tmp = a.get(i);// if("3".equals(tmp)){// a.remove(tmp);// }// } /*3、规范点*/// Iterator<String> it = a.iterator();// while (it.hasNext()) {// String temp = it.next();// if ("3".equals(temp)) {// /*a.remove(temp);*/// /*这里调用的是list的remove方法,// *由于调用list.remove()方法导致modCount// *和expectedModCount的值不一致。// *会报ConcurrentModificationException异常// **/// it.remove();// /*这里调用的是Iterator的remove方法,可以解决*/// }// } System.out.println("处理后:\n"+a); }}
可以分别替换注释的部分来运行看看;
如果要深究的话可以参考这篇博客
ConcurrentModificationException原因的深究
还有这篇
集合迭代时对集合进行修改抛ConcurrentModificationException
阅读全文
0 0
- 关于java.util.ConcurrentModificationException异常
- 异常:java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException 异常
- 异常:java.util.ConcurrentModificationException
- 异常:java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException 异常
- java.util.ConcurrentModificationException 异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- java.util.ConcurrentModificationException异常
- 【Angular】ngOnInit()方法介绍
- Java类加载机制
- MySQL函数
- 算法导论 练习题 18.1-4
- Java CRC校验和算法Demo
- 关于java.util.ConcurrentModificationException异常
- 持续集成&(Gitlab部署)
- 5招看清房龄真面目 不再谈“老”色变!
- STL源码剖析读书笔记6
- 【Java设计模式】- 装饰器模式
- 设计模式-观察者模式
- 查询oracle 序列
- Spring中映射Mongodb中注解的解释
- Android-->全面详解Git和Github的使用