我知道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