如果您查看Collection实现的代码,请选择ArrayList; 我们在modCount中声明了一个变量AbstractList:
protected transient int modCount = 0;
然后在每个修改方法(例如remove)中ArrayList我们有
public E remove(int index) {
rangeCheck(index);
modCount++;
//....
所以modCount只会增加; 它永远不会递减。
然后Iterator我们有:
final void checkForComodification() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
}
创建时拍摄expectedModCount的快照在哪里。modCountIterator
因此,如果在使用an 的同一个实例时对底层有任何修改,那么将抛出 a。ListIteratorConcurrentModificationException
我想有一个极端的情况,如果你进行了足够的修改,那么它int会溢出并再次返回到它的原始值——然而,这将是一个相当大的数字或修改;准确地说是2 32 。