如果remove()被调用但是什么都没做,那么迭代器是否会被损坏?

时间:2012-06-06 11:54:41

标签: java collections iterator concurrentmodification

假设我正在迭代某个集合,然后使用缺席密钥调用remove(),这样它就什么都不做。下一次迭代会导致异常吗?

1 个答案:

答案 0 :(得分:4)

首先,ConcurrentModificationException是可选的。兼容容器不必尝试发现的所有的并发修改。

然而,大多数标准容器都倾向于这样做。

我刚刚在JDK7中检查了其中几个,并且只有在找到元素后才会提高修改计数。

话虽如此,我会劝阻你不要依赖这种行为。