Сравните интерфейсы Iterator и ListIterator. В чем их основные отличия и в каких случаях лучше использовать каждый из них?

Iterator позволяет обходить элементы коллекции в одном направлении (вперед), проверять наличие следующего элемента (hasNext()) и получать его (next()).

Короткий ответ

Что ответить на собеседовании

Iterator позволяет обходить элементы коллекции в одном направлении (вперед), проверять наличие следующего элемента (hasNext()) и получать его (next()). Может удалять текущий элемент (remove()). Его используют для общего перебора любых коллекций, реализующих интерфейс Iterable.

Подробный разбор

Ответ с пояснениями

Iterator позволяет обходить элементы коллекции в одном направлении (вперед), проверять наличие следующего элемента (hasNext()) и получать его (next()). Может удалять текущий элемент (remove()). Его используют для общего перебора любых коллекций, реализующих интерфейс Iterable.

ListIterator наследует Iterator и добавляет функциональность:

  • Перемещение в обоих направлениях (hasPrevious(), previous()).
  • Получение индекса текущего (nextIndex()) и предыдущего (previousIndex()) элемента.
  • Изменение элемента (set()).
  • Добавление элемента (add()).

ListIterator применим только к коллекциям, реализующим интерфейс List, поскольку работает с индексами.

Используйте Iterator для универсального обхода и удаления элементов в любых Iterable коллекциях. Используйте ListIterator для специализированных операций с List (двунаправленное перемещение, изменение, добавление по индексу).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее