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