问下java 的 ListIterator 的问题

为什么一下程序的结果是这样的:
code:
import java.util.*;
public class Test {
public static void main (String args[]) {
String elements[] = {"Noodle", "Rice", "Juice", "Vegetable"};
int i=0;
List list = new LinkedList(Arrays.asList(elements));
ListIterator iter = list.listIterator(list.size());
while(iter.hasPrevious()){
if (iter.previous().equals("Rice")){
iter.set("aa");
}
System.out.println(iter.previous());
} } }

输出结果:
Juice
Noodle
为什么 Vegetable 没输出来? 如果我没set的话 就有。

while(iter.hasPrevious()){
if (iter.previous().equals("Rice")){
iter.set("aa");
}
System.out.println(iter.previous());
}

每调用一次previous()都会使迭代器的指针发生移动
你在循环里边用了两个iter.previous()
这样就会在一次循环里跳过两次previous()
不信你试一下如果你的elements[]数组里边是奇数个元素,会发生错误
你需要用一个临时变量来实现依次循环使用一个previous()

String temp="";
while(iter.hasPrevious()){
temp=iter.previous();
if (temp.equals("Rice")){
iter.set("aa");
}
System.out.println(temp);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-29
你在两个地方用了下一个了,if (iter.previous().equals("Rice"))和System.out.println(iter.previous());
,输出的当然就减半了啊,取得第一个的时候就保存再来,避免用两次就行了
第2个回答  2011-04-29
iter.previous()这个方法不是下标,而是这个List的指针调一次挪一次,当然看不见了。
第3个回答  2011-04-29
程序进入了死循环状态
第4个回答  2011-04-29
好像没有错
相似回答