9

在使用 Eclipse 调试 Java 代码时,对于集合变量,我看到了modcount成员。这是什么意思?

4

1 回答 1

34

Java 的许多集合产生的迭代器是“快速失败的”,这意味着如果在创建迭代器后更改集合,则迭代器将失效并ConcurrentModificationException尽快抛出 a。(与稍后失败或返回无效数据相比。)

为了支持此功能,集合必须跟踪它是否已被修改。每次更改集合时,它都会递增modcount。当集合产生一个迭代器时,迭代器存储modcount它创建时的 from 值。然后,每当您尝试使用迭代器时,它都会检查其保存modcount的是否与父集合的 current 不同modcount;如果是,则迭代器失败并显示ConcurrentModificationException.

(此规则的一个例外是通过迭代器本身(如迭代器的方法)对集合进行的修改remove不会使迭代器无效。)

于 2012-06-14T23:15:32.880 回答