Java для каждого цикла (он же расширен для цикла) является упрощенной версией цикла for. Преимущество состоит в том, что меньше кода для написания и меньше переменных для управления. Недостатком является то, что вы не можете контролировать значение шага и не имеете доступа к индексу цикла внутри тела цикла.
Лучше всего их использовать, когда значение шага является простым приращением 1 и когда вам нужен только доступ к элементу текущего цикла. Например, если вам нужно перебрать каждый элемент в массиве или коллекции, не заглядывая вперед или позади текущего элемента.
Нет инициализации цикла, нет логического условия, и значение шага неявно и является простым приращением. Вот почему они считаются намного проще, чем обычные для циклов.
Улучшено для циклов в следующем порядке:
1) тело петли
2) повторять с шага 1 до тех пор, пока не будет пройден весь массив или коллекция
Пример - целочисленный массив
int [] intArray = {1, 3, 5, 7, 9};
for(int currentValue : intArray) {
System.out.println(currentValue);
}
Переменная currentValue содержит текущее значение, зацикленное в массиве intArray. Обратите внимание, что нет явного значения шага - оно всегда увеличивается на 1.
Можно предположить, что двоеточие означает «в». Таким образом, расширенные для объявления цикла состояния: зациклите intArray и сохраните текущее значение массива int в переменной currentValue.
Выход:
1
3
5
7
9
Пример - String Array
Мы можем использовать цикл for-each для итерации по массиву строк. Объявление цикла гласит: зациклите массив String myStrings и сохраните текущее значение String в переменной currentString.
String [] myStrings = {
"alpha",
"beta",
"gamma",
"delta"
};
for(String currentString : myStrings) {
System.out.println(currentString);
}
Выход:
alpha
beta
gamma
delta
Пример - Список
Расширенный цикл for также можно использовать для перебора java.util.List следующим образом:
List<String> myList = new ArrayList<String>();
myList.add("alpha");
myList.add("beta");
myList.add("gamma");
myList.add("delta");
for(String currentItem : myList) {
System.out.println(currentItem);
}
Объявление цикла гласит: зацикливание списка строк myList и сохранение текущего значения списка в переменной currentItem.
Выход:
alpha
beta
gamma
delta
Пример - Установить
Усовершенствованный цикл for также можно использовать для перебора java.util.Set следующим образом:
Set<String> mySet = new HashSet<String>();
mySet.add("alpha");
mySet.add("alpha");
mySet.add("beta");
mySet.add("gamma");
mySet.add("gamma");
mySet.add("delta");
for(String currentItem : mySet) {
System.out.println(currentItem);
}
Объявление цикла гласит: зацикливание набора строк mySet и сохранение текущего значения Set в переменной currentItem. Обратите внимание, что, поскольку это Set, повторяющиеся значения String не сохраняются.
Выход:
alpha
delta
beta
gamma
Источник: Циклы в Java - Ultimate Guide