Introdução ao loop For-Each em Java
Para cada loop foi introduzido em Java a partir do JDK 5. Ele visa a iteração seqüencial através de todos os elementos de uma coleção ou matriz. Também existe em outros idiomas como C #, onde usa a palavra-chave para cada um. No entanto, Java usa a palavra-chave 'for' apenas para implementar para cada loop, diferentemente do C #, mas sua sintaxe difere da convencional para um loop. Esse loop for-each também é conhecido como aprimorado para loop em Java.
Sintaxe
for(type iter_var : Collection) statement_block
A explicação para cada um dos termos usados acima é a seguinte:
- 'type' indica o tipo de dados dos objetos do
- 'iter_var' indica o nome da variável de iteração que armazena cada valor da coleção à medida que iteramos pelo loop.
- 'Coleção' especifica a coleção ou matriz através da qual queremos iterar.
- 'bloco de instruções' é o conjunto de instruções que queremos executar para cada iteração do loop.
É essencial observar que o loop for-each acessa os elementos de coleção / array sequencialmente, onde armazena o valor de cada elemento na variável de iteração. A seguir, é apresentado o diagrama de fluxo do loop for-each.
Como você notou, existem certas diferenças sutis entre o loop for e para cada loop. O loop For requer que o número de iterações seja especificado com antecedência. No entanto, esse não é o caso do loop for-each, pois o loop itera do primeiro elemento para o último elemento da Collection / array e não precisa que o número de iterações seja especificado.
Um ponto importante a ser lembrado é que o tipo especificado no loop for-each deve corresponder ao tipo dos elementos na coleção, caso contrário, haverá problemas de compatibilidade.
Exemplos
For loop
Vamos encontrar a idade média de um grupo de pessoas usando o loop for:
Código
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
int sum = 0;
System.out.print("Ages of the group are : "); for (int i = 0; i < 10 ; i++)
(
System.out.print(ages(i)+" "); sum += ages(i);
)
System.out.println("\n Average age of the group = " + (sum/10));
)
)
Resultado:
Loop For-Each
Para encontrar a idade média de um grupo de pessoas usando um loop for-each:
Código
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
int sum = 0;
System.out.print("Ages of the group are : "); for (int x : ages)
(
System.out.print(x+" "); sum += x;
)
System.out.println("\n Average age of the group = " + (sum/10));
)
)
Resultado:
A saída é a mesma, usando os dois loops vistos nas figuras acima.
Loop Foreach usando Break Statement
É possível reduzir o número de iterações do loop for-each usando uma instrução break. Por exemplo, se queremos encontrar a soma dos 5 primeiros elementos, podemos usar a instrução break da seguinte maneira:
Código
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
int ctr = 0, sum = 0;
System.out.print("Ages of the group are : "); for (int x : ages)
(
System.out.print(x+" ");
)
for (int x : ages)
(
if (ctr == 5) break; sum += x;
ctr += 1;
)
System.out.println("\nSum of age of first 5 people of the group = " + sum);
)
)
Resultado:
No loop for-each mencionado acima, x é a variável de iteração que armazena um elemento da matriz por iteração que muda na próxima iteração. Na primeira iteração, x armazena o primeiro elemento da matriz e o último elemento da matriz na última iteração. Diferentemente de loop, onde acessamos os elementos da matriz usando o índice, para cada loop usa a variável de iteração para acessar os elementos.
É necessário tomar cuidado ao usar para cada loop, pois a variável de iteração armazena o valor do elemento da matriz temporariamente, pois é "somente leitura" e a alteração de seu valor não modifica a matriz original. Isso contradiz o loop for, onde a alteração de um elemento modifica a matriz original.
Vamos considerar um exemplo em que adicionamos 5 a cada elemento da matriz. Podemos identificar a diferença na saída no seguinte código de exemplo:
For loop com condição diferente
Código
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
System.out.print("Elements of the array are : "); for (int i = 0; i < 10; i++)
(
System.out.print(ages(i)+" "); ages(i)+= 5;
)
System.out.print("\nNew elements of the array are : "); for (int i = 0; i < 10; i++)
(
System.out.print(ages(i)+" ");
)
)
)
Resultado:
A saída do loop for mostrando a atualização da matriz original
Foreach loop com condição diferente
Código
public class Main
(
public static void main(String() args) (
int ages() = (15, 18, 16, 17, 14, 12, 13, 20, 22, 25);
System.out.print("Elements of the array are : "); for (int x : ages)
(
System.out.print(x+" "); x += 5;
)
System.out.print("\nNew elements of the array are : "); for (int x : ages)
(
System.out.print(x+" ");
)
)
)
Resultado:
A saída do loop for-each mostrando nenhuma atualização da matriz original
Coisas para se lembrar sobre o loop For-Each em java
- For-Cada loop em java é usado para iterar através de elementos de matriz / coleção em uma sequência.
- O loop For-Each em java usa a variável de iteração para iterar sobre uma coleção ou matriz de elementos.
- Modificar a variável de iteração não modifica a matriz / coleção original, pois é somente leitura.
- O tipo no loop for-each deve corresponder ao tipo dos elementos originais da matriz / coleção.
- O loop Foreach não precisa que o número de iterações seja especificado, pois ele itera sobre todos os elementos da coleção.
- É possível parar o loop for-each usando uma instrução break.
Artigos recomendados
Este é um guia para o loop For-Each em java. Aqui discutimos o loop For-Each em java com sua implementação de código de diferentes maneiras, com a instrução break e com as várias condições. Você também pode consultar os seguintes artigos para saber mais -
- Matriz de impressão em Java
- Loops na Programação Java
- While Loop em Java
- Matrizes 3D em Java
- Ferramentas de implantação Java
- Matrizes 3D em C ++
- For Loop em C
- Matrizes na programação Java