在eclispse中调试集合时我只是检查有一个名为modCount的东西,例如,如果我们调试列表,我们将在调试时看到这个modCount表示的内容。!!请指教
答案 0 :(得分:8)
参见javadoc
此列表经过结构修改的次数。 结构修改是那些改变列表大小或以其他方式扰乱它的方式,即正在进行的迭代可能会产生不正确的结果。
此字段由迭代器和listIterator方法返回的迭代器和列表迭代器实现使用。如果此字段的值意外更改,则迭代器(或列表迭代器)将抛出ConcurrentModificationException以响应下一个,删除,上一个,设置或添加操作。这提供了快速失败的行为,而不是在迭代期间面对并发修改时的非确定性行为。
子类对此字段的使用是可选的。如果一个子类希望提供快速失败的迭代器(并列出迭代器),那么它只需要在其add(int,E)和remove(int)方法中增加该字段(以及它覆盖的任何其他方法导致结构修改清单)。对add(int,E)或remove(int)的单个调用必须向该字段添加不超过一个,否则迭代器(和列表迭代器)将抛出伪造的ConcurrentModificationExceptions。如果实现不希望提供快速失败的迭代器,则可以忽略此字段。
答案 1 :(得分:3)
它是一个计数器,用于在迭代集合时检测对集合的修改:迭代器快速失败,如果在迭代期间修改了集合,则抛出异常。 modCount
用于跟踪修改。
仅供参考,标准类的源代码是JDK的一部分,您可以阅读它们以了解标准类的工作原理。