Ответ
Iterator — это объект, реализующий интерфейс java.util.Iterator<E>, который предоставляет стандартный способ последовательного обхода элементов коллекции без раскрытия её внутренней структуры.
Основные методы:
boolean hasNext()— проверяет, остались ли в коллекции элементы.E next()— возвращает следующий элемент и сдвигает позицию итератора.void remove()— опционально удаляет последний возвращённый элементо (next()). Вызов без предшествующегоnext()приводит кIllegalStateException.
Пример использования:
List<String> list = Arrays.asList("A", "B", "C");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String element = it.next();
System.out.println(element);
// it.remove(); // Безопасное удаление текущего элемента
}
Ключевые особенности и правила:
- Безопасное удаление: Удалять элементы во время итерации можно только через метод
remove()итератора. Попытка изменить коллекцию напрямую (например,list.remove(...)) во время итерации вызоветConcurrentModificationException. - Fail-fast поведение: Стандартные итераторы коллекций из пакета
java.utilявляются «отказоустойчивыми» (fail-fast) и бросаютConcurrentModificationExceptionпри обнаружении структурных изменений коллекции после создания итератора. - Универсальный доступ: Интерфейс
Iterable, содержащий методiterator(), реализован всеми основными коллекциями (Collection,List,Set,Queue), что позволяет использовать цикл for-each. - Специализированные итераторы: Существуют
ListIterator(для списков, с двунаправленным обходом) иSpliterator(для параллельной обработки).