对于.next()如何在Java迭代器中工作而不使用for循环感到困惑

时间:2019-04-20 04:31:08

标签: 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

1 个答案:

答案 0 :(得分:2)

因为您仅将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);