Iterator
Объект, который по одному выдаёт элементы коллекции.
Доступно с: Java 1.2
Синтаксис
public interface Iterator<E> {
boolean hasNext();
E next();
default void remove();
}Примеры
Ручной обход:
void main() {
Iterator<String> it = List.of("a", "b", "c").iterator();
while (it.hasNext()) {
IO.println(it.next());
}
}Результат:
a
b
cБезопасное удаление во время обхода:
void main() {
List<Integer> nums = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6));
Iterator<Integer> it = nums.iterator();
while (it.hasNext()) {
if (it.next() % 2 == 0) {
it.remove();
}
}
IO.println(nums);
}Результат:
[1, 3, 5]Примечания
next() после конца бросает NoSuchElementException, поэтому сначала проверяйте hasNext(). it.remove() удаляет последний выданный элемент — это единственный безопасный способ удалять в процессе обхода. Сегодня для этой задачи короче removeIf().
См. также
- Iterable — Интерфейс всего, что можно обойти циклом for-each.
- Collection.removeIf() — Удаляет из коллекции все элементы, подходящие под условие.
Вопросы и ответы по теме
В учебнике
- Обход коллекций — Как перебрать коллекцию в Java: цикл for-each, индексы, forEach с лямбдой, обход словаря, Iterator и removeIf.