首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接列表: Iterator与List Iterator

链接列表: Iterator与List Iterator
EN

Stack Overflow用户
提问于 2017-11-13 16:31:35
回答 2查看 1.1K关注 0票数 2

我在Java中查看链接列表,在C中学习它们,我注意到我可以使用迭代器类来遍历链接列表。但我发现奇怪的是,他们使用ListIterator对列表进行向前迭代(它还可以根据指针所在的位置向后迭代),使用Iterator对列表进行反向迭代。我的问题是,为什么我们不能使用Iterator来前后迭代呢?这两者有什么区别呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-13 16:41:00

爱尔兰人

Iterator是一个非常通用的解决方案,它应该适用于all data-structures,实际上您可以在Collection (文档)中迭代的每个类。但是,并不是每个类都能确保向后迭代,仅仅是因为它们的内部数据结构。例如,TreeSet只知道它的元素:

因此,Iterator试图适应所有数据结构的共同能力,使其至少可以在单向 (文档)中迭代。

ListIterator

ListIterator是一个特殊的,不是一般的,解决方案只能用于特殊的List,因为由于它们的内部结构,它们可以在两个方向上迭代(并且允许在两者之间添加和删除元素)。这在TreeSet这样的其他结构中是不可能的,所以Collection没有为所有Collection提供ListIterator,只有List提供了它。从它的文档

列表的迭代器,它允许程序员在任一方向遍历列表,在迭代期间修改列表,并获得迭代器在列表中的当前位置。

最后,如果Collection提供像ListIterator这样的特殊Iterator,那么所有的实现类,也包括TreeSet和co。需要实现这个方法。然而,这些类可能无法满足这一要求(不需要额外的开销)。

票数 2
EN

Stack Overflow用户

发布于 2017-11-13 16:37:07

来自API:

列表的迭代器,它允许程序员在任一方向遍历列表,在迭代期间修改列表,并获得迭代器在列表中的当前位置。

相反,Iterator 只能向前迭代。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47269140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档