85 lines
3.7 KiB
Markdown
85 lines
3.7 KiB
Markdown
---
|
||
title: For Each Loop
|
||
localeTitle: Для каждого цикла
|
||
---
|
||
# Для каждого цикла
|
||
|
||
Также называемый расширенным циклом `for` , это чрезвычайно полезный и простой способ перебора каждого элемента в коллекции, массиве или любом объекте, который реализует интерфейс `Iterable` .
|
||
|
||
```java
|
||
for (object : iterable)
|
||
{
|
||
// Statements
|
||
}
|
||
```
|
||
|
||
Цикл читается как «для каждого элемента в `iterable` (может быть массив, собираемый и т. Д.)». Тип `object` должен соответствовать типу элемента `iterable` .
|
||
|
||
```java
|
||
int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
|
||
|
||
for (int numbers : number_list)
|
||
{
|
||
System.out.print(numbers + " ");
|
||
// Iterated 10 times, numbers 0,1,2...9
|
||
}
|
||
```
|
||
|
||
Вывод:
|
||
```
|
||
0 1 2 3 4 5 6 7 8 9
|
||
```
|
||
|
||
: ракета: [Код запуска](https://repl.it/CJYs/0)
|
||
|
||
Сравнивая это с традиционными `for` петель:
|
||
|
||
```java
|
||
int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
|
||
|
||
for(int i=0;i < number_list.length;i++)
|
||
{
|
||
System.out.print(number_list[i]+" ");
|
||
// Iterated 10 times, numbers 0,1,2...9
|
||
|
||
}
|
||
```
|
||
|
||
Вывод:
|
||
```
|
||
0 1 2 3 4 5 6 7 8 9
|
||
```
|
||
|
||
: ракета: [Код запуска](https://repl.it/NJfG/0)
|
||
|
||
Однако обе части фрагментов кода выполняют одну и ту же работу, однако, очевидно, что для каждой петли есть преимущества в упрощении итерации и доступа элементов коллекции (массива в нашем случае).
|
||
|
||
С улучшенными циклами циклов нам больше не нужно упоминать начальные и конечные точки цикла, что уменьшает ошибки OutofBounds. Потребность в счетчиках контуров и ручном индексировании удаляется, а читаемость кода улучшается.
|
||
|
||
Важно отметить, что внесение изменений в переменную итерации для расширенных циклов в цикле не приводит к изменениям исходных элементов коллекции.
|
||
|
||
Улучшенные для циклов также могут использоваться с многомерными массивами или другими наборами Java. Пример его использования с массивами с несколькими расширениями показан ниже:
|
||
|
||
```java
|
||
int number_list_new[][]={ { 0, 1, 2},
|
||
{ 3, 4, 5},
|
||
{ 6, 7, 8} };
|
||
|
||
// Because 2d arrays are implemented as "arrays of arrays",the first iteration variable iterates
|
||
// through 3 such arrays(that is, the 3 rows of testarr[][])
|
||
for(int i[] : number_list_new)
|
||
{
|
||
for(int j : i){
|
||
System.out.print(j+" ");
|
||
}
|
||
}
|
||
```
|
||
|
||
Вывод:
|
||
```
|
||
0 1 2 3 4 5 6 7 8
|
||
```
|
||
|
||
: ракета: [Код запуска](https://repl.it/NJhP/0)
|
||
|
||
В приведенных выше фрагментах кода `number_list` является массивом. Если вы не знаете, что это такое, не беспокойтесь об этом. Массив - это контейнерный объект, который содержит фиксированное число значений одного типа, но больше об этом позже. |