概述
ConcurrentModificationException.java
package cn.itcast.exception;
import java.lang.ref.SoftReference;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
/**
* ConcurrentModificationException:
* 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常
*
* 产生的原因:
* 迭代器是依赖于集合存在的,在判断成功后,集合中新添加了元素,而迭代器却不知道
*
* 解决方法:
* 集合遍历元素,集合修改元素
* 迭代器遍历元素,迭代器修改元素(普通for循环,增强for循环底层也是用迭代器实现的)
*
*/
public class ConcurrentModificationException {
public static void main(String[] args) {
List list = new ArrayList();
list.add("hello");
list.add("world");
list.add("java");
//迭代器遍历 ConcurrentModificationException
// Iterator it = list.iterator();
// while(it.hasNext()){
// String s = (String)it.next();
// if("world".equals(s)){
// list.add("javaee");
// }
// }
// ListIterator listIt = list.listIterator();
// while(listIt.hasNext()){
// String ss = (String) listIt.next();
// if("world".equals(ss)){
// listIt.add("javaee");
// }
// System.out.println(ss);
// }
// System.out.println("-----------------");
// System.out.println(list);
// Output:
// hello
// world
// java
// -----------------
// [hello, world, javaee, java]
for(int i=0; i<list.size();i++){
String ss = (String) list.get(i);
if(ss.equals("world")){
list.add("javaee");
}
System.out.println(ss);
}
System.out.println("-----------------");
System.out.println(list);
// Output:
// hello
// world
// java
// javaee
// -----------------
// [hello, world, java, javaee]
}
}
最后
以上就是唠叨皮卡丘为你收集整理的集合框架--List ConcurrentModificationException的全部内容,希望文章能够帮你解决集合框架--List ConcurrentModificationException所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复