iterator的romove方法的注意事项

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的元素!

posted @ 2016-05-15 10:20  lonecloud  阅读(1356)  评论(0编辑  收藏  举报
我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:lonecloud,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply