Java 链表:迭代器与列表迭代器
我正在回顾Java中的链表,在C中学习了它们,我注意到我可以使用迭代器类遍历链表。但我发现奇怪的是,他们使用ListIterator在列表上向前迭代(也可以根据指针的位置向后迭代),使用Iterator在列表上向后迭代。我的问题是,为什么我们不能使用迭代器来向前和向后迭代呢?两者之间有什么区别? 列表的迭代器,允许程序员沿任意方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置 相反地,Java 链表:迭代器与列表迭代器,java,list,linked-list,iterator,Java,List,Linked List,Iterator,我正在回顾Java中的链表,在C中学习了它们,我注意到我可以使用迭代器类遍历链表。但我发现奇怪的是,他们使用ListIterator在列表上向前迭代(也可以根据指针的位置向后迭代),使用Iterator在列表上向后迭代。我的问题是,为什么我们不能使用迭代器来向前和向后迭代呢?两者之间有什么区别? 列表的迭代器,允许程序员沿任意方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置 相反地,迭代器迭代器 迭代器是一种非常通用的解决方案,它应该适合所有的数据结构,事实上,您可以迭代集合(
迭代器
迭代器
迭代器
是一种非常通用的解决方案,它应该适合所有的数据结构,事实上,您可以迭代集合()中的每个类。但是,并不是每个类都可以仅仅由于其内部数据结构而确保向后迭代。例如,TreeSet
只知道其根元素:
因此,Iterator
试图使所有数据结构的通用能力至少在一个方向上是可移植的
列表迭代器
ListIterator
是一种特殊的,不是通用的解决方案仅可用于特殊的列表
,因为由于其内部结构,它们可以在两个方向上进行迭代(也允许在两者之间添加和删除元素)。对于其他结构,如TreeSet
,这是不可能的,因此Collection
不会为所有集合
提供列表迭代器
,只有列表
有它。从其:
列表的迭代器,允许程序员沿任意方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置
总而言之,如果
集合
将提供一个特殊的迭代器
,如列表迭代器
,那么所有实现类,也就是树集
和co.都需要实现此方法。但是,这些类可能无法满足这一要求(没有沉重的额外开销)。listIterator
添加了多个方法来在您正在迭代的数据结构中移动,我不知道您在找什么,但是downingiterator
实际上实现了Iterator
,并在内部使用ListItr
,这反过来在向前迭代时使用。还是我错过了你的问题?@如果用户回答了你的问题,请也接受他的回答()。如果没有,请说明还有什么问题没有回答,这是StackOverflow的关键部分,非常感谢。