首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java-将列表迭代器重置为列表的第一个元素

java-将列表迭代器重置为列表的第一个元素
EN

Stack Overflow用户
提问于 2012-12-04 02:19:02
回答 7查看 122.3K关注 0票数 43

我需要知道如何“重置”LinkedList迭代器的第一个元素。

例如:

LinkedList<String> list;

Iterator iter=list.listIterator;

iter.next();

iter.next();

一遍又一遍,在迭代器的多次移动之后,我需要“重置”迭代器的位置。`

我想问一下如何将迭代器“重置”为第一个元素

我知道我可以用这种方式得到第一个元素的列表迭代器:

iter= list.listIterator(1);

这是最好的解决方案吗?或者,也许我在Oracle文档中遗漏了什么?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-12-04 02:23:44

最好是根本不使用LinkedList,通常它在所有学科中都较慢,而且不太方便。(主要在前面插入/删除时,尤其是对于大型阵列,LinkedList速度更快)

代码语言:javascript
复制
int len = list.size();
for (int i = 0; i < len; i++) {
  Element ele = list.get(i);
}

重置是微不足道的,只要再次循环即可。

如果您坚持使用迭代器,那么您必须使用新的迭代器:

代码语言:javascript
复制
iter = list.listIterator();

(我一生中只看到过一次LinkedList的优点:我可以遍历while循环并删除第一个元素)

票数 25
EN

Stack Overflow用户

发布于 2012-12-04 02:20:52

您可以再次调用listIterator方法来获取指向列表开头的迭代器的实例:

代码语言:javascript
复制
iter = list.listIterator();
票数 53
EN

Stack Overflow用户

发布于 2015-02-28 10:46:26

这是一种替代解决方案,但有人可能会说,它并没有增加足够的价值,因此它是值得的:

代码语言:javascript
复制
import com.google.common.collect.Iterables;
...
Iterator<String> iter = Iterables.cycle(list).iterator();
if(iter.hasNext()) {
    str = iter.next();
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13689288

复制
相关文章

相似问题

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