调试集合时modcount变量是什么

时间:2012-06-14 23:05:11

标签: java eclipse collections

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

1 个答案:

答案 0 :(得分:33)

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

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

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