Ответ
Цикл for-each (также known как enhanced for loop) требует выполнения одного условия:
Итерируемый объект должен реализовывать интерфейс java.lang.Iterable или быть массивом.
Синтаксис:
for (Type element : iterableOrArray) {
// Действие с element
}
Примеры:
-
С массивом (все массивы в Java совместимы с for-each):
int[] numbers = {1, 2, 3}; for (int num : numbers) { System.out.println(num); } -
С коллекцией (все стандартные коллекции реализуют
Iterable):List<String> names = List.of("Alice", "Bob"); for (String name : names) { System.out.println(name.toUpperCase()); }
Важное ограничение:
- Нельзя изменять коллекцию/массив (добавлять/удалять элементы) во время итерации с помощью
for-each. Это вызоветConcurrentModificationException. - Для модификации используйте явный
Iteratorи его методы (remove()).Iterator<String> it = list.iterator(); while (it.hasNext()) { String item = it.next(); if (shouldRemove(item)) { it.remove(); // Безопасное удаление } }
Почему это работает? Цикл for-each — это синтаксический сахар. Компилятор преобразует его в стандартный цикл с использованием Iterator для коллекций или индексного цикла для массивов.