我有一个简单LinkedList
的 Java 语言,它有 10 个元素。在那种状态下,我得到一个普通的ListIterator
,比如 .listIterator(3)。如果我然后在列表中插入/删除其他元素,而不触及我拥有的元素ListIterator
(也不是迭代器),那么ListIterator
仍然有效吗?
问问题
74 次
1 回答
5
如果你修改了自己的方法java.util.LinkedList
之外的ListIterator
一个迭代器,那么迭代器就会被掺假,ConcurrentModificationException
如果你再次尝试使用它就会抛出异常。
这在链接列表的 javadoc 中有介绍:
此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:如果在创建迭代器后的任何时间对列表进行结构修改,除了通过迭代器自己的 remove 或 add 方法之外的任何方式,迭代器将抛出 ConcurrentModificationException。因此,面对并发修改,迭代器快速而干净地失败,而不是在未来不确定的时间冒任意的、非确定性的行为。
于 2018-04-10T23:19:44.357 回答