Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Iterator

Объект, который по одному выдаёт элементы коллекции.

Доступно с: Java 1.2

Синтаксис

public interface Iterator<E> {
    boolean hasNext();
    E next();
    default void remove();
}

Примеры

Ручной обход:

void main() {
    Iterator<String> it = List.of("a", "b", "c").iterator();
    while (it.hasNext()) {
        IO.println(it.next());
    }
}

Результат:

a
b
c

Безопасное удаление во время обхода:

void main() {
    List<Integer> nums = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6));
    Iterator<Integer> it = nums.iterator();
    while (it.hasNext()) {
        if (it.next() % 2 == 0) {
            it.remove();
        }
    }
    IO.println(nums);
}

Результат:

[1, 3, 5]

Примечания

next() после конца бросает NoSuchElementException, поэтому сначала проверяйте hasNext(). it.remove() удаляет последний выданный элемент — это единственный безопасный способ удалять в процессе обхода. Сегодня для этой задачи короче removeIf().

См. также

  • Iterable — Интерфейс всего, что можно обойти циклом for-each.
  • Collection.removeIf() — Удаляет из коллекции все элементы, подходящие под условие.

Вопросы и ответы по теме

В учебнике

  • Обход коллекций — Как перебрать коллекцию в Java: цикл for-each, индексы, forEach с лямбдой, обход словаря, Iterator и removeIf.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.