如何使用ListIterator?

时间:2017-04-16 13:04:44

标签: java arraylist collections iterator listiterator

我正在使用ArrayList的iterator:

List<String> al = new ArrayList<>();
// ----- Logic for adding elements-----
Iterator it = al.iterator();
// logic to retrieve elements----

然后它尝试使用ListIterator,就像这样。

ListIterator li = al.listIterator();
    while(li.hasNext()) {
        System.out.print(li.next()+" ");
    }

工作......

我试过这个用于反向检索

ListIterator li = al.listIterator();
while(li.hasPrevious()) {
        System.out.print(li.previous()+" ");
    }

但它不起作用。

以下代码正常运作。

ListIterator<String> li = al.listIterator(al.size());
    while(li.hasPrevious()) {
        System.out.println(li.previous()+" ");
    }

我想知道有一些泛型的概念,但不清楚它。 请清除Iterator和ListIterator的概念。 为什么ListIterator的一个语句正在运行另一个而不是?

2 个答案:

答案 0 :(得分:7)

第一个从列表的开头开始,因此没有任何先前的元素。

第二个从结尾开始,因此有前面的元素。

就这么简单。

答案 1 :(得分:0)

使用时:

ListIterator<String> li = al.listIterator(al.size());
你正在打电话:

ListIterator<E> List.listIterator(int index)

从列表中指定的位置开始,以相应的顺序返回列表中元素的列表迭代器。

它基本上在列表末尾开始列表迭代器,并且与hasPrevious()一起工作。

-

ListIterator li = al.listIterator(); 你从头开始迭代,它没有前一个元素。

我建议使用IDE并设置调试点来评估条件。

参考Java doc here以获取更多信息。