【正确答案】它们主要的区别是fail-safe允许在遍历的过程中对容器中的数据进行修改,而fail-fast则不允许。下面分别介绍这两种迭代器的工作原理。
fail-fast:直接在容器上进行遍历,在遍历的过程中,一旦发现容器中的数据被修改了(添加元素、删除元素或修改元素),会立刻抛ConcurrentModificationException异常从而导致遍历失败。常见的使用fail-fast方式的容器有HashMap和ArrayList等。
fail-safe:这种遍历基于容器的一个克隆。因此,对容器中内容的修改不影响遍历。常见的使用fail-safe方式遍历的容器有ConcurrentHashMap和CopyOnWriteArrayList。
【答案解析】