【问题标题】:How To Use ListIterator?如何使用 ListIterator?
【发布时间】:2017-09-12 05:57:47
【问题描述】:

我将 ArrayList 的迭代器用作:

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 的一个语句在另一个不工作?

【问题讨论】:

    标签: java arraylist collections iterator listiterator


    【解决方案1】:

    使用时:

    ListIterator<String> li = al.listIterator(al.size());
    

    你在打电话:

    ListIterator<E> List.listIterator(int index)
    

    返回此列表中元素的列表迭代器(按正确顺序),从列表中的指定位置开始。

    它本质上是在列表末尾启动您的列表迭代器,并与 hasPrevious() 一起工作。

    -

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

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

    参考 Java 文档 here 了解更多信息。

    【讨论】:

      【解决方案2】:

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

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

      就这么简单。

      【讨论】:

      • 你速度很快:/
      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 2021-02-03
      • 2017-11-14
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多