0Pricing
Java Academy · Урок

Итераторы и расширенный 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 — локальная установка не требуется.

Все уроки этого курса

  1. Обзор List и Set
  2. Итераторы и расширенный for
  3. Утилиты коллекций
← Назад к Java Academy