我需要知道如何“重置”LinkedList迭代器的第一个元素。
例如:
LinkedList<String> list;
Iterator iter=list.listIterator;
iter.next();
iter.next();
一遍又一遍,在迭代器的多次移动之后,我需要“重置”迭代器的位置。`
我想问一下如何将迭代器“重置”为第一个元素
我知道我可以用这种方式得到第一个元素的列表迭代器:
iter= list.listIterator(1);
这是最好的解决方案吗?或者,也许我在Oracle文档中遗漏了什么?
发布于 2012-12-04 02:23:44
最好是根本不使用LinkedList,通常它在所有学科中都较慢,而且不太方便。(主要在前面插入/删除时,尤其是对于大型阵列,LinkedList速度更快)
int len = list.size();
for (int i = 0; i < len; i++) {
Element ele = list.get(i);
}重置是微不足道的,只要再次循环即可。
如果您坚持使用迭代器,那么您必须使用新的迭代器:
iter = list.listIterator();(我一生中只看到过一次LinkedList的优点:我可以遍历while循环并删除第一个元素)
发布于 2012-12-04 02:20:52
您可以再次调用listIterator方法来获取指向列表开头的迭代器的实例:
iter = list.listIterator();发布于 2015-02-28 10:46:26
这是一种替代解决方案,但有人可能会说,它并没有增加足够的价值,因此它是值得的:
import com.google.common.collect.Iterables;
...
Iterator<String> iter = Iterables.cycle(list).iterator();
if(iter.hasNext()) {
str = iter.next();
}https://stackoverflow.com/questions/13689288
复制相似问题