许多Java的集合产生“快速失败”的迭代器,这意味着如果在创建迭代器之后更改了集合,迭代器将被使无效,并在尽可能快地抛出一个“ConcurrentModificationException”异常。 (与之后失败或返回无效数据相比。)为了支持这个功能,集合必须跟踪是否已经被修改。每次更改集合时,它都会增加“modcount”。当集合产生迭代器时,迭代器存储了它创建时的“modcount”的值。然后,无论何时你试图使用迭代器,它都会检查它保存的“modcount”是否与父集合当前的“modcount”不同;如果是,则迭代器会因为“ConcurrentModificationException”异常而失败。(这个规则的例外是通过迭代器本身(例如迭代器的“remove”方法)对集合进行的修改不会使迭代器失效。)