iterator的romove方法的注意事項

lonecloud發表於2016-05-15
package cn.lonecloud.Iterator;

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

public class myIterator {
	public static void main(String[] args) {
		ArrayList<Integer> list=new ArrayList<Integer>();
		for (int i = 0; i < 10; i++) {
			list.add(i);
		}
		/**
		 * Exception in thread "main" java.lang.IllegalStateException
			at java.util.ArrayList$Itr.remove(ArrayList.java:864)
			at cn.lonecloud.Iterator.myIterator.main(myIterator.java:17)
		 */
		Iterator<Integer> iterator=list.iterator();
		while (iterator.hasNext()) {
			Integer integer = (Integer) iterator.next();
			System.out.println(integer);
			iterator.remove();
			iterator.remove();//這裡會出現錯誤由於next和remove方法的呼叫是具有相互依賴性的;
			//如果沒有呼叫next將是不合法的,會導致IllegalStateException異常
			
		}
	}
}

  在iterator 中他的remove的元素是他在next中最後一個next的元素!

相關文章