1. 程式人生 > >Iterator併發修改異常

Iterator併發修改異常

併發修改異常: 當方法檢測到物件的併發修改,但不允許這種修改時,丟擲此異常。

//  ConcurrentModificationException

產生的原因: 迭代器是依賴於集合而存在的,在判斷成功之後,集合當中增加了新的元素,而迭代器卻不知道,所以就報錯了,這個就叫併發修改異常。

package cn.hhy.test_04;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListIteratorDemo2 {
	public static void main(String[] args) {
		//建立集合物件
		List list = new ArrayList();
						
		//新增物件
		list.add("hello");
		list.add("world");
		list.add("java");
		
		//迭代器遍歷
		Iterator it = list.iterator();
		while(it.hasNext()){
			String string = (String) it.next();
			//ConcurrentModificationException
			if(string.equals("world")){
				list.add("javaee");
			}
		}
		
		System.out.println("list:"+list);
	}
}

所報的錯誤:

Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
	at java.util.AbstractList$Itr.next(AbstractList.java:343)
	at cn.hhy.test_04.ListIteratorDemo2.main(ListIteratorDemo2.java:23)