ConcurrentModificationException并发修改异常

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class ListTest {

	
	public static void main(String[] args) {
		Collection col = new ArrayList();
		//集合只能存储引用数据类型,那这里为什么可以存基本数据类型,因为集合在此处将基本数据类型自动装箱
		col.add(1);
		col.add(2);
		col.add(3);
		col.add(5);
		//集合引用调用自己的迭代器
		Iterator iterator = col.iterator();
		while(iterator.hasNext()){
			//注意这句的重要性,不分开写的话不会出现我想看到的错误
			Object obj = iterator.next();
			//这里记得加双引号
			if(obj.toString().equals("3")){
				col.add(4);
			}
			System.out.println(obj.toString());
		}
	}
}

运行结果,

  

 在进行list列表元素迭代的时候,如果想要在迭代过程中,想要对元素进行操作的时候,比如满足条件添加新元素,就会发生 ConcurrentModificationException 并发修改异常。

  导致的原因是

  集合引用和迭代引用在同时操作元素,通过集合获取到对应的迭代器后,在迭代中,进行集合引用的元素的添加,迭代器

并不知道,所以会出现异常情况。

  解决办法:在迭代器中对元素进行操作,找迭代器的方法最为合适,可是Iterator中只有hasNext(),next(),remove()方法

,通过查阅的它的子接口,ListIterator,发现该列表迭代器接口具备了对元素的增删改查的动作。

posted @ 2014-03-05 16:48  lxricecream  阅读(833)  评论(0)    收藏  举报