logo

Per a cada bucle a Java

Prerequisit: presa de decisions en Java
For-each és una altra tècnica de travessa de matrius com for loop, while loop, do-while loop introduït a Java5.

  • Comença amb la paraula clau per com un for-loop normal.
  • En lloc de declarar i inicialitzar una variable de comptador de bucles, declareu una variable que és del mateix tipus que el tipus base de la matriu, seguida de dos punts, seguida del nom de la matriu.
  • Al cos del bucle, podeu utilitzar la variable de bucle que heu creat en lloc d'utilitzar un element de matriu indexat.
  • S'utilitza habitualment per iterar sobre una matriu o una classe de col·leccions (per exemple, ArrayList)

Sintaxi:



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

Programa senzill amb per a cada bucle:

Java

foreach bucle mecanografiat








/*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 +>' '>);> >}> }>

lògica de primer ordre
>

>

Sortida

10 50 60 80 90>

La sintaxi anterior és equivalent 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>maxSoFar) { maxSoFar = num;   } } retorn maxSoFar;   } } Sortida La puntuació més alta és 132 Limitacions de la presa de decisions de bucles per a cada buc Els bucles per a cada buc no són adequats quan es vol modificar la matriu : for (núm int : marques) { // només canvia num, no l'element de la matriu num = num*2; } 2. Els bucles For-each no fan un seguiment de l'índex . Per tant, no podem obtenir l'índex de matriu utilitzant el bucle For-Each for (núm int : nombres) { if (núm == objectiu) { retorn ???; // no conec l'índex de num } } 3. For-each només itera cap endavant sobre la matriu en passos senzills // no es pot convertir en un bucle for-each for (int i=numbers.length-1; i>0 ; i--) { System.out.println(números[i]); } 4. For-each no pot processar dues declaracions de presa de decisions alhora // no es pot convertir fàcilment en un bucle for-each for (int i=0; i 5. For-each també té una mica de sobrecàrrega de rendiment sobre una simple iteració: Java / *paquet el que sigui //no escrigui el nom del paquet aquí */ import java.util.* class GFG { public static void principal (String[] args) { List list = new ArrayList(); startTime; temps final llarg per (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 = llista.get(j);   } endTime = Calendar.getInstance().getTimeInMillis();   System.out.println('Usant [int j = list.size(); j> size; j--] :: ' + (endTime - startTime) + ' ms');   } } // Aquest codi és aportat per Ayush Choudhary @gfg(code_ayush) Sortida Per a cada bucle :: 45 ms Utilitzant collection.size() :: 11 ms Calculant collection.size() primer :: 13 ms Utilitzant [int j = llista.mida(); j> mida; j--] :: 15 ms Articles relacionats: For-each in C++ vs Java Iterator vs For-each in Java>