Sobes.tech
Назад к вопросам
Junior — Middle
64

Можете объяснить различия между интерфейсами Iterator и Iterable и как они взаимодействуют друг с другом?

Компании, где спрашивали
СБЕРСБЕР
ТОП КЕЙС

Ответ от нейросети

sobes.tech AI

В Java интерфейс Iterable представляет коллекцию, элементы которой можно перебрать. Он содержит один метод iterator(), который возвращает объект типа Iterator.

Интерфейс Iterator предоставляет методы для последовательного обхода элементов коллекции:

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

Взаимодействие:

  • Класс, реализующий Iterable, предоставляет метод iterator(), который возвращает объект Iterator.
  • Этот Iterator используется для обхода элементов коллекции.

Пример:

List<String> list = Arrays.asList("a", "b", "c");
for (String s : list) { // for-each использует Iterable
    System.out.println(s);
}

// Аналогично с Iterator
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

Таким образом, Iterable — это коллекция, которую можно перебрать, а Iterator — инструмент для перебора этой коллекции.