假设我运行这段代码,它向我显示: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()
发生了,即使我们应该在 list 的末尾(据我所知)。关于元素 3.
首先,迭代器在 1 上。hasNext()
返回 true
因为 list 后面有 2。
所以我进入循环,it.next()
返回 1 并将光标设置为 2。当我添加 10 时,它发生在 cursor 位置,所以在 1 之间和2。
然后,it.next()
返回 2 并将光标设置为 3。然后我在 2 和 3 之间添加 10。
但是此时,我没有 3 的下一个,那么为什么 hasNext()
返回 true,在列表的最后位置添加 12?
最佳答案
Java 中的迭代器被创建为指向列表开始之前的位置,因此第一次调用 next()
返回第一个元素,如果列表有一个。因此,您将遍历列表中的所有项目,并在每个项目之后添加 10
。
关于java - ListIterator last hasNext() 有点不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30807653/