gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:06:17 25 4
gpt4 key购买 nike

我有以下一段代码:

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);

输出是这样的:
1
2
3
switch direction
3
2

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

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

是否有设计原因,或者它可能只是 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)

最佳答案

来自 Javadoc

(Note that alternating calls to next and previous will return the same element repeatedly.)



javadoc 还描述了

An iterator for a list of length n has n+1 possible cursor positions, as illustrated by the carets (^) below:


                     Element(0)   Element(1)   Element(2)   ... Element(n-1)
cursor positions: ^ ^ ^ ^ ^

如果光标在 Element(0) 之前,然后你做了一个 next() ,它将消耗 Element(0)并继续前进。当你做 previous ,它将再次消耗 Element(0) ,然后向后移动。

关于java - 为什么 Java 的列表迭代器在改变方向时没有返回正确的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28306327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com