如何使用列表迭代器?
How To Use ListIterator?
我将 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 的一个语句对另一个不起作用?
第一个从列表的开头开始,因此没有任何前一个元素。
第二个从末尾开始,因此有前面的元素。
就这么简单
当您使用时:
ListIterator<String> li = al.listIterator(al.size());
您正在呼叫:
ListIterator<E> List.listIterator(int index)
Returns 此列表中元素的列表迭代器(按正确顺序),从列表中的指定位置开始。
这实际上是在列表末尾启动列表迭代器,并与 hasPrevious() 一起工作。
-
但 ListIterator li = al.listIterator();
你从头开始迭代,它没有前一个元素。
我建议使用 IDE 并设置调试点来评估条件。
参考 Java 文档 here 了解更多信息。
我将 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 的一个语句对另一个不起作用?
第一个从列表的开头开始,因此没有任何前一个元素。
第二个从末尾开始,因此有前面的元素。
就这么简单
当您使用时:
ListIterator<String> li = al.listIterator(al.size());
您正在呼叫:
ListIterator<E> List.listIterator(int index)
Returns 此列表中元素的列表迭代器(按正确顺序),从列表中的指定位置开始。
这实际上是在列表末尾启动列表迭代器,并与 hasPrevious() 一起工作。
-
但 ListIterator li = al.listIterator();
你从头开始迭代,它没有前一个元素。
我建议使用 IDE 并设置调试点来评估条件。
参考 Java 文档 here 了解更多信息。