如何获取从最后一个元素开始的前向迭代器



我有一个LinkedList。假设我在末尾插入一个元素,并且我想保存它插入的位置,这样我就可以在它旁边的元素上调用一个函数,不管以后能进入这个集合的是什么。Java迭代器有可能吗?非常感谢。

回想一下,我对反向迭代不感兴趣。应用程序将是多线程的,因此有一个奇怪的要求。

您可以调用索引为size() -1List#listIterator(int index)来获得列表当前最后一个元素的迭代器。请参阅文档:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html

然而,你会被困在那里。

无论您正在使用的List实现是否是线程安全的,LinkedList、ArrayList和大多数其他实现都是这样,并且在对列表进行结构修改后尝试使用迭代器都会导致抛出ConcurrentModificationException。当列表的大小发生变化时,即在添加和删除时,会对其进行结构修改。

或者,您使用的List实现是线程安全的,在这种情况下,您不能保证迭代器在创建迭代器后能够访问添加到列表中的元素。例如,CopyOnWriteArrayList的情况就不是这样了,它的迭代器在创建数据时对数据进行迭代(就像快照一样(。

您必须找到一个List的实现,它清楚地描述了这种行为,并在其文档中明确地说明了这一点。据我所知,至少在标准库中,不存在任何允许它的程序。

最新更新