ListIterator以前的方法不起作用 包装; 导入java.util.*; 公共类ArrayListDemo{ 公共静态void main(字符串[]args){ ArrayList a=新的ArrayList(); a、 添加(“B”); a、 添加(“C”); a、 添加(“D”); ListIterator i=a.ListIterator(); 而(i.hasPrevious()){ System.out.println(i.previous()); } } }
该程序对于hasNext()和next()方法工作正常,但对于hasPrevious()和previous()它会显示如下消息:ListIterator以前的方法不起作用 包装; 导入java.util.*; 公共类ArrayListDemo{ 公共静态void main(字符串[]args){ ArrayList a=新的ArrayList(); a、 添加(“B”); a、 添加(“C”); a、 添加(“D”); ListIterator i=a.ListIterator(); 而(i.hasPrevious()){ System.out.println(i.previous()); } } },java,iterator,listiterator,Java,Iterator,Listiterator,该程序对于hasNext()和next()方法工作正常,但对于hasPrevious()和previous()它会显示如下消息: package wrap; import java.util.*; public class ArrayListDemo { public static void main(String [] args){ ArrayList<String> a=new ArrayList<String>(); a.a
package wrap;
import java.util.*;
public class ArrayListDemo {
public static void main(String [] args){
ArrayList<String> a=new ArrayList<String>();
a.add("B");
a.add("C");
a.add("D");
ListIterator<String> i=a.listIterator();
while(i.hasPrevious()){
System.out.println(i.previous());
}
}
}
ArrayListDemo[Java应用程序]C:\Program Files(x86)\Java\jre7\bin\javaw.exe(2013年10月28日下午3:20:35)
它将从列表的前面开始,因此在该点之前没有任何内容。如果要使用这些方法,请使用列表迭代器。
.从文件:
<terminated> ArrayListDemo [Java Application] C:\Program Files (x86)\Java\jre7\bin\javaw.exe (28-Oct-2013 3:20:35 PM)
如果此列表迭代器在遍历时有更多元素,则返回true
列表将以相反的方向显示
由于迭代器位于第一个位置,hasPrevious()
将返回false,因此不会执行while循环
boolean hasPrevious()
如果您这样做:
a's elements
"B" "C" "D"
^
|
Iterator is in first position so there is no previous element
"B" "C" "D"
^
|
Iterator is in second position so the previous element is "B"
您还可以使用方法
listIterator(int-index)
。它允许您将迭代器放置在索引定义的位置
如果您这样做:
a's elements
"B" "C" "D"
^
|
Iterator is in first position so there is no previous element
"B" "C" "D"
^
|
Iterator is in second position so the previous element is "B"
ListIterator i=a.ListIterator();
最初迭代器我将指向0的索引
您位于索引0处
,因此没有上一个元素。您为到达列表的末尾或介于两者之间的任何位置而给出的返回值。索引0处没有上一个元素到元素
乙二醇
由于您为列表获得了默认的ListIterator
,因此它从第一个元素开始,这就是hasPrevious()
返回false
并退出循环的原因。如果要以相反的顺序遍历列表,请从上一个索引中获取ListIterator
,并使用hasPrevious()
和previous()
方法向后遍历
System.out.println("Elements in forward directiton");
while(i.hasNext()){
System.out.println(i.next());
}
System.out.println("Elements in backward directiton");
while(i.hasPrevious()){
System.out.println(i.previous());
}
ListIterator i=a.ListIterator(a.size());//从最后一个索引中获取列表迭代器
而(i.hasPrevious()){
System.out.println(i.previous());
}
正如其他人所说,您的指针仍然指向列表中的第一个元素,所以-1是不可能的
大小为n的列表将以1,2…n-1作为索引
n-1不是-1
这就是为什么hasPrevious和previous不适合您的原因
干杯
D
C
B
ListIterator<String> i=a.listIterator();
System.out.println("Elements in forward directiton");
while(i.hasNext()){
System.out.println(i.next());
}
System.out.println("Elements in backward directiton");
while(i.hasPrevious()){
System.out.println(i.previous());
}
ListIterator<String> i = a.listIterator(a.size()); // Get the list iterator from the last index
while (i.hasPrevious()) {
System.out.println(i.previous());
}