使用Eclipse调试Java代码时,对于集合变量,我看到了modcount
成员。这是什么意思?
答案 0 :(得分:33)
许多Java集合产生“失败快速”的迭代器,这意味着如果在创建迭代器之后更改集合,迭代器将失效并尽快抛出ConcurrentModificationException
。 (与之后失败或返回无效数据相比。)
为了支持此功能,集合必须跟踪它是否已被修改。每次更改集合时,它都会递增modcount
。当集合生成迭代器时,迭代器会在创建时保存modcount
的值。然后,每当您尝试使用迭代器时,它会检查其保存的modcount
是否与父集合的当前modcount
不同;如果是,则迭代器失败并显示ConcurrentModificationException
。
(此规则的一个例外是通过迭代器本身(如迭代器的remove
方法)对集合的修改不会使迭代器失效。)