Итераторы и расширенный for
Перебирайте коллекции с помощью Iterator и расширенного for. Научитесь безопасно удалять элементы во время перебора и избегать распространённых ошибок.
«Итераторы и расширенный for» — бесплатный урок Java Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 3 уроков всего.
Обзор
Итератор даёт пошаговый контроль при переборе коллекции. Расширенный цикл for (for-each) короче и удобен для чтения элементов. Используйте итератор, когда во время перебора нужно безопасно удалять элементы.
Итератор и цикл for-each
- Итератор: используйте, если может потребоваться удаление элементов или точный контроль.
- Расширенный цикл for: лучше всего подходит для циклов, которые только читают данные.
- Никогда не изменяйте структуру коллекции внутри расширенного цикла for.
Код: простой итератор
Итератор использует hasNext() и next(). Каждый вызов next() перемещает итератор вперёд и возвращает элемент.
public class Main {
public static void main(String[] args) {
java.util.List<String> names = new java.util.ArrayList<>();
names.add("Ada"); names.add("Bob"); names.add("Cyd");
java.util.Iterator<String> it = names.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
}
}
Распространённая ошибка
Распространённая ошибка: прямое удаление элемента внутри расширенного цикла for часто вызывает ConcurrentModificationException. Используйте итератор для безопасных структурных изменений.
Код: безопасное удаление
Безопасное удаление: когда найден подходящий элемент, вызовите remove() у итератора сразу после next().
public class Main {
public static void main(String[] args) {
java.util.List<String> words = new java.util.ArrayList<>();
words.add("to"); words.add("be"); words.add("or"); words.add("not");
java.util.Iterator<String> it = words.iterator();
while (it.hasNext()) {
String w = it.next();
if (w.length() <= 2) {
it.remove(); // safe removal
}
}
System.out.println(words); // [not]
}
}
Код: расширенный цикл for и forEach
Расширенный цикл for удобен для чтения. forEach с лямбда-выражением — ещё один краткий вариант (Java 8 и новее).
public class Main {
public static void main(String[] args) {
java.util.Set<String> tags = new java.util.HashSet<>();
tags.add("java"); tags.add("collections"); tags.add("oop");
// enhanced for: read-only
for (String t : tags) {
System.out.print("[" + t + "]");
}
System.out.println();
// Java 8+ forEach
tags.forEach(t -> System.out.println("tag=" + t));
}
}
Проверка удаления с помощью итератора
Быстрая проверка: как безопасно удалять элементы во время перебора списка?
Повторение
Повторение: используйте расширенный цикл for для простого чтения. Используйте итератор, когда во время перебора необходимо удалять элементы. Это предотвращает ошибки во время выполнения.
Часто задаваемые вопросы
Урок «Итераторы и расширенный for» бесплатный?
Да — полный текст урока «Итераторы и расширенный for» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 3 уроков всего.
Чему я научусь в уроке «Итераторы и расширенный for»?
Перебирайте коллекции с помощью Iterator и расширенного for. Научитесь безопасно удалять элементы во время перебора и избегать распространённых ошибок. Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Итераторы и расширенный for»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Обзор List и Set
- Итераторы и расширенный for
- Утилиты коллекций