java - 对于 .next() 在 Java 迭代器中如何在不使用 for 循环的情况下工作感到困惑

标签 java iterator listiterator

我在 Java 中创建了一个字符串列表,并希望迭代使用迭代器类添加的元素(动物名称)。我想知道为什么在下面的代码中手动输入 it.next() 不会逐个打印出动物,而只打印出第一个动物“Dog”。

    public static void main(String[] args) {
        LinkedList<String> animals = new LinkedList<>();

        animals.add("Dog");
        animals.add("Cat");
        animals.add("Fox");
        animals.add("Rabbit");

        Iterator<String> it = animals.iterator();
        String animal1 = it.next();

        System.out.println(animal1);
        it.next();
        System.out.println(animal1);
        it.next()
        System.out.println(animal1);

}

我得到的输出是:

Dog
Dog
Dog

为什么它不逐行打印所有动物?像这样:

Dog 
Cat
Fox
Rabbit

最佳答案

因为您只是在第一次调用时将 it.next() 的结果分配给 animal1

这将为您提供您期望的行为:

String animal1 = it.next();
System.out.println(animal1);

animal1 = it.next();
System.out.println(animal1);

animal1 = it.next()
System.out.println(animal1);

关于java - 对于 .next() 在 Java 迭代器中如何在不使用 for 循环的情况下工作感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55770275/

相关文章:

C++ "="具有私有(private) vector 和迭代器的类的运算符行为

python - generator expression 和 itertools.chain 迭代大列表哪个更快更高效?

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

java - ReentrantLock and Condition,最佳设计

java - 在 Java 中,如何迭代接口(interface)的常量?

java - 如何对从 Java 控制台读取的多个整数求和?

ruby - 如何使用每个迭代器获取数组索引或迭代次数?

java - 在数据库中保存 OneToOne 映射对象?

C++ 组合与迭代器

java - 获取 LinkedHashMap 的前一个元素