我将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()+" ");
}我想知道是否有一些泛型的概念,但并不清楚。请明确的概念,同时为输尿管以及ListIterator。为什么ListIterator的一条语句起作用,另一种则不起作用??
发布于 2017-04-16 13:09:34
第一个元素从列表的开头开始,因此没有任何以前的元素。
第二个元素从结尾开始,因此具有以前的元素。
事情就是这么简单。
发布于 2017-04-16 13:24:49
当您使用:
ListIterator<String> li = al.listIterator(al.size());你在打电话:
ListIterator<E> List.listIterator(int index)返回列表中元素的列表迭代器(按正确的顺序),从列表中指定的位置开始。
它实际上是在列表末尾启动列表迭代器,并与hasPrevious()一起工作。
-
但是使用ListIterator li = al.listIterator();,您将从一开始就开始迭代,并且它没有前面的元素。
我建议使用IDE和设置调试点来评估条件。
有关更多信息,请参考Java 这里。
https://stackoverflow.com/questions/43437541
复制相似问题