假设我运行这段代码,它向我展示了这个:1 10 2 10 3 10
public class Test1{
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<Integer>();
list.add((1));
list.add((2));
list.add((3));
ListIterator<Integer> it = list.listIterator();
while(it.hasNext()){
it.next();
it.add((10));
}
for(Integer i : list){
System.out.println(i);
}
}
我不明白为什么最后一个hasNext()
发生甚至认为我们应该在列表的末尾(在我的理解中)。关于元素 3。
首先,迭代器在 1 上。hasNext()
returntrue
因为list后面有 2。所以我进入循环,it.next()
返回我 1 并将光标设置为 2。当我添加 10 时,它发生在光标位置,因此在 1 和 2 之间。然后,it.next()
返回我 2 并将光标设置为 3。然后我添加 10在 2 和 3 之间。但是此时,我没有 3 的下一个,那么为什么要hasNext()
返回 true,在列表的最后一个位置添加 12?