Спросят с вероятностью 19%
Итератор — это объект, который позволяет поочерёдно обходить элементы коллекции без раскрытия её внутреннего представления (структуры). Они используются для работы с различными структурами данных, такими как списки, множества и очереди. Основное предназначение — предоставить универсальный способ доступа к элементам коллекции, а также возможность их удаления в процессе итерации.
Зачем он нужен?
✅ Абстракция: Скрывает детали реализации коллекции, предоставляя простой интерфейс для её перебора. Это позволяет использовать один и тот же способ обхода для коллекций с различными внутренними структурами.
✅ Безопасность: Использование его для изменения коллекции во время итерации (например, удаление элементов) является безопасным. При попытке модифицировать коллекцию напрямую во время итерации может возникнуть
ConcurrentModificationException, но многие реализации итераторов предоставляют метод remove(), который позволяет безопасно удалять элементы.✅ Универсальность: Итераторы предоставляют единый способ работы с различными типами коллекций, что упрощает написание гибкого и переиспользуемого кода.
Как он работает?
Предоставляет как минимум три метода:
1️⃣ hasNext(): возвращает
true, если итератор имеет ещё элементы.2️⃣ next(): возвращает следующий элемент коллекции и переводит курсор итератора на одну позицию вперёд.
3️⃣ remove(): удаляет последний элемент, который был возвращён итератором с помощью метода
next(), из коллекции.Пример:
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
// Можно безопасно удалять элементы с помощью итератора
if("Python".equals(element)) {
iterator.remove();
}
}
Итератор — это механизм для безопасного и универсального обхода элементов коллекций, позволяющий избежать проблем с изменением коллекции во время итерации и скрывающий внутреннее устройство коллекции. Он необходим для реализации стандартного способа перебора элементов без необходимости знать, как устроена коллекция, и предоставляет безопасный способ её модификации в процессе обхода.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых