2

我有一个简单LinkedList的 Java 语言,它有 10 个元素。在那种状态下,我得到一个普通的ListIterator,比如 .listIterator(3)。如果我然后在列表中插入/删除其他元素,而不触及我拥有的元素ListIterator(也不是迭代器),那么ListIterator仍然有效吗?

4

1 回答 1

5

如果你修改了自己的方法java.util.LinkedList之外的ListIterator一个迭代器,那么迭代器就会被掺假,ConcurrentModificationException如果你再次尝试使用它就会抛出异常。

这在链接列表的 javadoc 中有介绍:

此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:如果在创建迭代器后的任何时间对列表进行结构修改,除了通过迭代器自己的 remove 或 add 方法之外的任何方式,迭代器将抛出 ConcurrentModificationException。因此,面对并发修改,迭代器快速而干净地失败,而不是在未来不确定的时间冒任意的、非确定性的行为。

于 2018-04-10T23:19:44.357 回答