For-each loop em Java
Pré-requisito: tomada de decisão em Java
For-each é outra técnica de passagem de array como for loop, loop while e loop do-while introduzidos em Java5.
- Ele começa com a palavra-chave for como um loop normal.
- Em vez de declarar e inicializar uma variável de contador de loop, você declara uma variável que é do mesmo tipo que o tipo base do array, seguido por dois pontos, que é seguido pelo nome do array.
- No corpo do loop, você pode usar a variável de loop criada em vez de usar um elemento de matriz indexado.
- É comumente usado para iterar sobre uma matriz ou uma classe de coleções (por exemplo, ArrayList)
Sintaxe:
for (type var : array) { statements using var; }
é equivalente a:
for (int i=0; i<arr.length; i++) { type var = arr[i]; statements using var; }
// Java program to illustrate
// for-each loop
class For_Each
{
public static void main(String[] arg)
{
{
int[] marks = { 125, 132, 95, 116, 110 };
int highest_marks = maximum(marks);
System.out.println("The highest score is " + highest_marks);
}
}
public static int maximum(int[] numbers)
{
int maxSoFar = numbers[0];
// for each loop
for (int num : numbers)
{
if (num > maxSoFar)
{
maxSoFar = num;
}
}
return maxSoFar;
}
}
Saída:
The highest score is 132
Limitações da
tomada de decisão para cada ciclo
- Os loops For-each não são apropriados quando você deseja modificar a matriz :
for (int num : marks) { // only changes num, not the array element num = num*2; }
2. Os loops For-each não acompanham o índice . Portanto, não podemos obter o índice da matriz usando o loop For-Each
for (int num : numbers) { if (num == target) { return ???; // do not know the index of num } }
3. For-each apenas itera para a frente sobre a matriz em etapas únicas
// cannot be converted to a for-each loop for (int i=numbers.length-1; i>0; i--) { System.out.println(numbers[i]); }
4. For-each não pode processar duas declarações de tomada de decisão ao mesmo tempo
// cannot be easily converted to a for-each loop for (int i=0; i<numbers.length; i++) { if (numbers[i] == arr[i]) { ... } }
5. For-each também tem alguma sobrecarga de desempenho em relação à iteração simples:
/*package whatever //do not write package name here */
import java.io.*;
import java.util.*;
class GFG {
public static void main (String[] args) {
List<Integer> list = new ArrayList<>();
long startTime;
long endTime;
for (int i = 0; i < 1000000; i++) {
list.add(i);
}
// Type 1
startTime = Calendar.getInstance().getTimeInMillis();
for (int i : list) {
int a = i;
}
endTime = Calendar.getInstance().getTimeInMillis();
System.out.println("For each loop :: " + (endTime - startTime) + " ms");
// Type 2
startTime = Calendar.getInstance().getTimeInMillis();
for (int j = 0; j < list.size(); j++) {
int a = list.get(j);
}
endTime = Calendar.getInstance().getTimeInMillis();
System.out.println("Using collection.size() :: " + (endTime - startTime) + " ms");
// Type 3
startTime = Calendar.getInstance().getTimeInMillis();
int size = list.size();
for (int j = 0; j < size; j++) {
int a = list.get(j);
}
endTime = Calendar.getInstance().getTimeInMillis();
System.out.println("By calculating collection.size() first :: " + (endTime - startTime) + " ms");
// Type 4
startTime = Calendar.getInstance().getTimeInMillis();
for(int j = list.size()-1; j >= 0; j--) {
int a = list.get(j);
}
endTime = Calendar.getInstance().getTimeInMillis();
System.out.println("Using [int j = list.size(); j > size ; j--] :: " + (endTime - startTime) + " ms");
}
}
// This code is contributed by Ayush Choudhary @gfg(code_ayush)
<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="374" src="https://www.youtube.com/embed/DUVqtwVJ3DI?feature=oembed" width="665"></iframe>
? list = PLqM7alHXFySF5ErEHA1BXgibGg7uqmA4_
Artigos relacionados:
For-each em C++ vs Java
Iterator vs For-each em Java
Este artigo foi contribuído por Abhishek Verma . Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar o seu artigo para contribute@geeksforgeeks.org. Veja o seu artigo na página principal do GeeksforGeeks e ajude outros Geeks.
Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva