Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链表:迭代器与列表迭代器_Java_List_Linked List_Iterator - Fatal编程技术网

Java 链表:迭代器与列表迭代器

Java 链表:迭代器与列表迭代器,java,list,linked-list,iterator,Java,List,Linked List,Iterator,我正在回顾Java中的链表,在C中学习了它们,我注意到我可以使用迭代器类遍历链表。但我发现奇怪的是,他们使用ListIterator在列表上向前迭代(也可以根据指针的位置向后迭代),使用Iterator在列表上向后迭代。我的问题是,为什么我们不能使用迭代器来向前和向后迭代呢?两者之间有什么区别? 列表的迭代器,允许程序员沿任意方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置 相反地,迭代器迭代器 迭代器是一种非常通用的解决方案,它应该适合所有的数据结构,事实上,您可以迭代集合(

我正在回顾Java中的链表,在C中学习了它们,我注意到我可以使用迭代器类遍历链表。但我发现奇怪的是,他们使用ListIterator在列表上向前迭代(也可以根据指针的位置向后迭代),使用Iterator在列表上向后迭代。我的问题是,为什么我们不能使用迭代器来向前和向后迭代呢?两者之间有什么区别?

列表的迭代器,允许程序员沿任意方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置

相反地,
迭代器

迭代器
迭代器
是一种非常通用的解决方案,它应该适合所有的数据结构,事实上,您可以迭代集合()中的每个类。但是,并不是每个类都可以仅仅由于其内部数据结构而确保向后迭代。例如,
TreeSet
只知道其根元素:

因此,
Iterator
试图使所有数据结构的通用能力至少在一个方向上是可移植的


列表迭代器
ListIterator
是一种特殊的,不是通用的解决方案仅可用于特殊的
列表
,因为由于其内部结构,它们可以在两个方向上进行迭代(也允许在两者之间添加和删除元素)。对于其他结构,如
TreeSet
,这是不可能的,因此
Collection
不会为所有
集合
提供
列表迭代器
,只有
列表
有它。从其:

列表的迭代器,允许程序员沿任意方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置



总而言之,如果
集合
将提供一个特殊的
迭代器
,如
列表迭代器
,那么所有实现类,也就是
树集
和co.都需要实现此方法。但是,这些类可能无法满足这一要求(没有沉重的额外开销)。

listIterator
添加了多个方法来在您正在迭代的数据结构中移动,我不知道您在找什么,但是
downingiterator
实际上实现了
Iterator
,并在内部使用
ListItr
,这反过来在向前迭代时使用。还是我错过了你的问题?@如果用户回答了你的问题,请也接受他的回答()。如果没有,请说明还有什么问题没有回答,这是StackOverflow的关键部分,非常感谢。