java将列表迭代器重置为列表的第一个元素
我需要知道如何“重置”LinkedList迭代器到它的第一个元素
例如:
LinkedList<String> list;
Iterator iter=list.listIterator;
iter.next();
iter.next();
在迭代器多次移动之后,我需要一次又一次地“重置”迭代器的位置。 `
我想问一下如何将迭代器“重置”为第一个元素
我知道我可以通过以下方式获得第一个元素的列表迭代器:
iter= list.listIterator(1);
这是最好的解决方案吗?或者我在Oracle文档中遗漏了什么
# 1 楼答案
在集合impl上调用
iterator()
,可能会在每次调用中得到一个新的迭代器因此,您只需再次调用
iterator()
即可获得一个新的代码
迭代学习。java
输出:
# 2 楼答案
最好不要使用
LinkedList
,通常它在所有学科中都比较慢,而且不太方便。(主要在前端插入/删除时,尤其是对于大型阵列,LinkedList速度更快)使用
ArrayList
,并使用重置很简单,只需再次循环即可
如果坚持使用迭代器,则必须使用新的迭代器:
(我一生中只见过一次LinkedList的优点:我可以循环which while循环并删除第一个元素)
# 3 楼答案
您可以再次调用
listIterator
方法以获取指向列表开头的迭代器实例:# 4 楼答案
这是另一种解决方案,但有人可能会说,它没有增加足够的价值,使其值得:
调用hasNext()会将迭代器光标重置为起始位置(如果它是结束位置)
# 5 楼答案
如果顺序不重要,我们可以使用相同的迭代器使用
hasPrevious()
和previous()
方法向后重新迭代:最初迭代器位于开始处,我们进行向前迭代:
然后迭代器位于末尾,我们可以执行向后迭代:
# 6 楼答案
实际上,您可能需要使用一个
Iterable
,它可以通过调用iterator()
多次返回一个新的Iterator
您必须预先定义
iterator()
方法执行的操作一次: