我知道failfast迭代器在尽力而为的基础上检查ConcurrentModificationException。为什么不会像hasnext或hasPrevious方法检查ConcurrentModificationException并抛出它?为什么没有hasnext,hasprevious等Iterator或ListIterator方法检查ConcurrentModificationException
下面的代码可以很好地用于精确的原因,这些方法都没有检查CME虽然已经结构体改
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> lilong = new ArrayList<String>();
lilong.add("Queen");
for(Iterator<String> iter =lilong.iterator();iter.hasNext();)
{
System.out.println(iter.next());
lilong.add("King");
lilong.remove(0);
lilong.add("Star");
lilong.remove(0);
lilong.add("Sun");
lilong.remove(0);
lilong.add("Polar Bear");
lilong.clear();
lilong.add("There you go");
}
System.out.println("size="+ lilong.size()+"##element##"+lilong.iterator().next());
}
我在这里没有看到任何迭代器。 – Maroun
迭代器隐藏在for-each语句中。 – Kayaman
@Kayaman我的意思是['iterator()'](http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#iterator())。每个循环的 – Maroun