假设我运行此代码,它向我显示: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()
返回true
,因为 list 后面有2个。
所以我进入循环,it.next()
返回1并将光标设置为2.当我添加10时,它发生在光标位置,因此介于1和2之间。
然后,it.next()
返回2并将光标设置为3.然后我在2和3之间添加10。
但是在这一点上,我没有3的下一个,那么为什么hasNext()
返回true,在列表的最后一位添加12?
答案 0 :(得分:3)
创建Java中的迭代器以指向列表开头之前的位置,因此第一次调用next()
会返回第一个元素(如果列表中有一个)。因此,您将遍历列表中的所有项目,并在每个项目之后添加10
。
答案 1 :(得分:2)