85 lines
2.6 KiB
Markdown
85 lines
2.6 KiB
Markdown
|
---
|
|||
|
title: For Each Loop
|
|||
|
localeTitle: Para cada loop
|
|||
|
---
|
|||
|
# Para cada loop
|
|||
|
|
|||
|
Também chamado `for` loop `for` aprimorado, é uma maneira extremamente útil e simples de iterar sobre cada item em uma coleção, matriz ou qualquer objeto que implemente a interface `Iterable` .
|
|||
|
|
|||
|
```java
|
|||
|
for (object : iterable)
|
|||
|
{
|
|||
|
// Statements
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
O loop é lido como "para cada elemento no `iterable` (pode ser um array, colecionável etc.)". O tipo de `object` deve corresponder ao tipo de elemento do `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
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Saída:
|
|||
|
```
|
|||
|
0 1 2 3 4 5 6 7 8 9
|
|||
|
```
|
|||
|
|
|||
|
: rocket: [Run Code](https://repl.it/CJYs/0)
|
|||
|
|
|||
|
Comparando isso com o tradicional `for` laços:
|
|||
|
|
|||
|
```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
|
|||
|
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Saída:
|
|||
|
```
|
|||
|
0 1 2 3 4 5 6 7 8 9
|
|||
|
```
|
|||
|
|
|||
|
: rocket: [Run Code](https://repl.it/NJfG/0)
|
|||
|
|
|||
|
Ambas as partes de trechos de código acima fazem o mesmo trabalho, no entanto, claramente, para cada loop oferece vantagens em facilitar a iteração e o acesso a elementos de uma coleção (array, no nosso caso).
|
|||
|
|
|||
|
Com os loops forçados aprimorados, não precisamos mais mencionar os pontos inicial e final para o loop, reduzindo assim os erros de OutofBounds. A necessidade de contadores de loop e a indexação manual são removidas e a legibilidade do código é aprimorada.
|
|||
|
|
|||
|
É importante observar que fazer alterações na variável de iteração para loops forçados aprimorados dentro do loop não causa alterações nos elementos da coleção original.
|
|||
|
|
|||
|
Os loops forçados aprimorados também podem ser usados com matrizes multidimensionais ou outras coleções Java. Um exemplo de seu uso com matrizes multidimensionais é mostrado abaixo:
|
|||
|
|
|||
|
```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+" ");
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
Saída:
|
|||
|
```
|
|||
|
0 1 2 3 4 5 6 7 8
|
|||
|
```
|
|||
|
|
|||
|
: rocket: [Run Code](https://repl.it/NJhP/0)
|
|||
|
|
|||
|
Nos trechos de código acima, `number_list` é uma matriz. Se você não sabe o que é isso, não se preocupe com isso. Uma matriz é um objeto contêiner que contém um número fixo de valores de um único tipo, mas mais sobre isso depois.
|