小编ung*_*rys的帖子

为什么Java的列表迭代器在改变方向时没有返回正确的元素

我有以下代码:

LinkedList<String> list = new LinkedList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
ListIterator<String> iterator = list.listIterator();
String str = iterator.next();
System.out.println(str);
str = iterator.next();
System.out.println(str);
str = iterator.next();
System.out.println(str);
System.out.println("switch direction");
str = iterator.previous();
System.out.println(str);
str = iterator.previous();
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

1
2
3
switch direction
3
2
Run Code Online (Sandbox Code Playgroud)

我希望在第一次iterator.previous()调用时打印2,但不是.它给了我相同的元素,就像这个函数在第一次调用时什么都不做.

如果我从最后一次到第一次开始迭代,同样的事情发生,我将中间的方向改回到最后一次.

是否存在设计原因,或者它只是Java列表迭代器中的错误?

我在用:

java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java arrays iterator list listiterator

2
推荐指数
1
解决办法
547
查看次数

标签 统计

arrays ×1

iterator ×1

java ×1

list ×1

listiterator ×1