java - ListIterator last hasNext() 有点不明白

标签 java iterator listiterator

假设我运行这段代码,它向我显示: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/

相关文章:

python - 迭代列表的列表,不返回子列表中的所有项目

java - 在迭代列表时将元素添加到列表中。 ( java )

python - 迭代一个类型而不实例化它

java - AChartEngine,点击获取图表值

java - 针对更大的字符串优化 Java 中的 native 消息主机

java - Java 风格的 Groovy 和 Java 一样快吗?

python - 如何在Python中合并单个列表并求和?

java - 当尝试操作 ArrayList 时,复制 ArrayList 还是使用 ListIterator 更快?

c++ - 双向解引用迭代器的返回类型

java - 内容 URI 和本地化