首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java:重置ListIterator?

java:重置ListIterator?
EN

Stack Overflow用户
提问于 2010-01-27 16:35:17
回答 4查看 6.8K关注 0票数 4

我需要多次遍历LinkedList,以建议使用ListIterator的方式。

有办法重置ListIterator吗?还是仅仅创建一个新的更好?(如果我无法访问名单,怎么办?)

编辑:有没有一种方法可以创建指向列表末尾的ListIterator?(所以hasNext()是假的,但我可以使用previous()hasPrevious())

EN

回答 4

Stack Overflow用户

发布于 2010-01-27 16:40:24

在性能方面,创建一个新的迭代器可能更快。如果您没有这个列表,您仍然可以使用hasPrevious()和前驱()向后移动,直到您将迭代器放在列表的开头。根据列表实现的不同,您可能会遇到相关的性能影响,在迭代器中反向导航。

票数 3
EN

Stack Overflow用户

发布于 2010-12-03 14:57:40

看起来,AbstractList.listIterator(int initialPos)是我想要用于ArrayList的东西,而LinkedList.descendingIterator()是我想要用于LinkedList的方法,但是似乎没有一种方法可以有效地应用于这两种方法,descendingIterator()返回一个Iterator,而不是ListIterator。德拉特。

代码语言:javascript
复制
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorTest {
    static public void populate(List<Integer> list)
    {
        for (int i = 0; i < 10; ++i)
        {
            list.add(i*i);
        }       
    }
    static public void main(String[] args)
    {
        AbstractList<Integer> list = new ArrayList<Integer>();
        populate(list);

        ListIterator<Integer> it;       
        System.out.println("List going forwards:");
        it = list.listIterator();
        while (it.hasNext())
            System.out.println(it.next());

        System.out.println("List going backwards:");
        it = list.listIterator(list.size());
        while (it.hasPrevious())
            System.out.println(it.previous());

        LinkedList<Integer> list2 = new LinkedList<Integer>();
        populate(list2);
        System.out.println("List going forwards:");
        it = list2.listIterator();
        while (it.hasNext())
            System.out.println(it.next());

        System.out.println("List going backwards:");
        Iterator<Integer> it2 = list2.descendingIterator();
        while (it2.hasNext())
            System.out.println(it2.next());

    }
}
票数 2
EN

Stack Overflow用户

发布于 2010-01-27 16:40:01

根据获得的LinkedList创建一个新的ListIterator,这样您就可以从它获得任意数量的迭代器。

编辑:关于你后来编辑的第二个问题,先考虑在列表上做一个Collections#reverse()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2148602

复制
相关文章

相似问题

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