Что такое Iterator в Java и для чего он нужен?

«Что такое Iterator в Java и для чего он нужен?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Iterator — это интерфейс в Java, предоставляющий стандартный способ последовательного обхода элементов коллекции без раскрытия её внутренней структуры.

Основные методы:

  • boolean hasNext() — проверяет наличие следующего элемента.
  • E next() — возвращает следующий элемент.
  • void remove() — удаляет текущий элемент (опциональная операция).

Пример использования:

List<String> list = Arrays.asList("A", "B", "C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}

Преимущества:

  1. Универсальность — единый API для обхода любых коллекций (List, Set, Queue).
  2. Безопасное удаление — метод remove() позволяет удалять элементы во время итерации без риска ConcurrentModificationException (если коллекция его поддерживает).
  3. Fail-fast поведение — большинство итераторов выбрасывают ConcurrentModificationException при обнаружении структурных изменений коллекции во время обхода.
  4. Изоляция от реализации — клиентский код не зависит от внутреннего устройства коллекции (массив, связный список, дерево).

Важно: Для модификации коллекции во время итерации следует использовать только метод remove() итератора, а не методы самой коллекции.