public class Alpha {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("a");
al.add("b");
al.add("c");
al.add("d");
al.add("e");
Iterator<String> itr = al.listIterator();
while(itr.hasNext()){
al.remove("d"); // Throws a Concurrent Modification @ this line
if(itr.next().equals("d")){
//itr.remove();
al.remove("d"); // No error on this line
}
}
System.out.println(al);
}
}
换句话说,如果将 "al.remove("d") 放在 if 构造中,则不会抛出 ConcurrentModificationException,与同一行代码一样,如果放在 if -Construct 之外,则会引发异常。请解释!