Смущен тем, как .next () работает в итераторах Java без использования цикла for - PullRequest
1 голос
/ 20 апреля 2019

Я создал список строк в Java и хочу перебирать элементы (имена животных), которые я добавил, используя класс итератора.Мне было интересно, почему ручной ввод it.next () в следующем коде не распечатывает животных по одному, а просто распечатывает первое животное «Собака».

    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 Ответ

2 голосов
/ 20 апреля 2019

Поскольку вы присваиваете результат 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);
...