logo

Per ogni ciclo in Java

Prerequisito: processo decisionale in Java
For-each è un'altra tecnica di attraversamento di array come il ciclo for, il ciclo while e il ciclo do- while introdotti in Java5.

  • Inizia con la parola chiave per come un normale ciclo for.
  • Invece di dichiarare e inizializzare una variabile contatore del ciclo, dichiari una variabile dello stesso tipo del tipo base dell'array, seguita da due punti, seguiti quindi dal nome dell'array.
  • Nel corpo del ciclo, puoi utilizzare la variabile del ciclo creata anziché utilizzare un elemento dell'array indicizzato.
  • È comunemente usato per scorrere un array o una classe Collections (ad esempio, ArrayList)

Sintassi:

for (type var : array) { statements using var; }>

Programma semplice con per ogni ciclo:



Giava

inizializzatore di dizionario C#




/*package whatever //do not write package name here */> > import> java.io.*;> > class> Easy> > {> > >public> static> void> main(String[] args)> > >{> > >// array declaration> > >int> ar[] = {>10>,>50>,>60>,>80>,>90> };> > >for> (>int> element : ar)> > >System.out.print(element +>' '>);> >}> }>

versioni Android
>

>

Produzione

10 50 60 80 90>

La sintassi precedente è equivalente a:

for (int i=0; i  Java       // 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>max finora) { max finora = num;   } } return maxSoFar;   } } Output Il punteggio più alto è 132 Limitazioni del processo decisionale del ciclo for-each I cicli for-each non sono appropriati quando si desidera modificare l'array: for (int num :marks) { // cambia solo num, non l'elemento dell'array numero = numero*2; } 2. I cicli For-each non tengono traccia di index . Quindi non possiamo ottenere l'indice dell'array utilizzando il ciclo For-Each for (int num: numeri) { if (num == target) { return ???; // non conosco l'indice di num } } 3. For-each esegue l'iterazione in avanti sull'array in singoli passaggi // non può essere convertito in un ciclo for-each for (int i=numeri.lunghezza-1; i>0 ; i--) { System.out.println(numeri[i]); } 4. For-each non può elaborare due istruzioni decisionali contemporaneamente // non può essere facilmente convertito in un ciclo for-each for (int i=0; i 5. For-each ha anche qualche sovraccarico di prestazioni rispetto alla semplice iterazione: Java / *pacchetto qualunque // non scrivere il nome del pacchetto qui */ import java.io.*; import java.util.*; public static void main (String[] args) { List list = new ArrayList(); orainizio; orafine lunga; 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   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   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 = lista.get(j);   } endTime = Calendar.getInstance().getTimeInMillis();   System.out.println('Using [int j = list.size(); j> size ; j--] :: ' + (endTime - startTime) + ' ms');   } } // Questo codice è fornito da Ayush Choudhary @gfg(code_ayush) Output Per ogni ciclo :: 45 ms Utilizzando collection.size() :: 11 ms Calcolando prima collection.size() :: 13 ms Utilizzando [int j = lista.dimensione(); j> dimensione ; j--] :: 15 ms Articoli correlati: For-each in C++ vs Java Iterator vs For-each in Java>