4

在 eclispse 中调试集合时,我只是检查有一个叫做 modCount 的东西,例如,如果我们调试列表,我们会在调试时看到这个 modCount 代表什么..!!请告知

4

2 回答 2

9

请参阅 javadoc

此列表在结构上被修改的次数结构修改是那些改变列表大小的修改,或者以其他方式扰乱它,使得正在进行的迭代可能产生不正确的结果。

该字段由 iterator 和 listIterator 方法返回的迭代器和列表迭代器实现使用。如果此字段的值意外更改,迭代器(或列表迭代器)将抛出 ConcurrentModificationException 以响应下一个、删除、上一个、设置或添加操作。这提供了快速失败的行为,而不是面对迭代期间的并发修改时的不确定行为。

子类对该字段的使用是可选的。如果一个子类希望提供快速失败的迭代器(和列表迭代器),那么它只需要在其 add(int, E) 和 remove(int) 方法(以及它覆盖的任何其他导致结构列表的修改)。对 add(int, E) 或 remove(int) 的单个调用必须向该字段添加不超过一个,否则迭代器(和列表迭代器)将抛出虚假的 ConcurrentModificationExceptions。如果实现不希望提供快速失败的迭代器,则可以忽略此字段。

于 2012-08-06T17:36:16.343 回答
4

它是一个计数器,用于在迭代集合时检测对集合的修改:迭代器会快速失败,如果在迭代期间修改了集合,则会抛出异常。modCount用于跟踪修改。

仅供参考,标准类的源代码是 JDK 的一部分,您可以阅读它们以了解标准类的工作原理。

于 2012-08-06T17:34:25.300 回答