logo

Boucle For-each en Java

Prérequis : Prise de décision en Java
For-each est une autre technique de traversée de tableau comme la boucle for, la boucle while et la boucle do-while introduites dans Java5.

  • Cela commence par le mot-clé pour comme une boucle for normale.
  • Au lieu de déclarer et d'initialiser une variable de compteur de boucles, vous déclarez une variable du même type que le type de base du tableau, suivie de deux points, qui sont ensuite suivis du nom du tableau.
  • Dans le corps de la boucle, vous pouvez utiliser la variable de boucle que vous avez créée plutôt que d'utiliser un élément de tableau indexé.
  • Il est couramment utilisé pour parcourir un tableau ou une classe Collections (par exemple, ArrayList)

Syntaxe:

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

Programme simple avec pour chaque boucle :



Java

chaîne en 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 +>' '>);> >}> }>

>

>

java longueur du tableau
Sortir

10 50 60 80 90>

La syntaxe ci-dessus est équivalente à :

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;   } } renvoie maxSoFar ;   } } Sortie Le score le plus élevé est 132 Limitations de la prise de décision en boucle for-each Les boucles For-each ne sont pas appropriées lorsque vous souhaitez modifier le tableau : for (int num : marks) { // ne change que le num, pas l'élément du tableau num = num*2; } 2. Les boucles For-each ne gardent pas la trace de index . Nous ne pouvons donc pas obtenir l'index du tableau en utilisant la boucle For-Each for (int num : number) { if (num == target) { return ???; // ne connaît pas l'index de num } } 3. For-each parcourt le tableau uniquement en étapes simples // ne peut pas être converti en boucle for-each for (int i=numbers.length-1; i>0 ; i--) { System.out.println(nombres[i]); } 4. For-each ne peut pas traiter deux déclarations de prise de décision à la fois // ne peut pas être facilement converti en une boucle for-each for (int i=0; i 5. For-each a également une certaine surcharge de performances par rapport à une itération simple : Java / *package quel que soit //n'écrivez pas le nom du package ici */ import java.io.*; import java.util.*; public static void main (String[] args) { List list = new ArrayList(); startTime ; long endTime ; pour (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 = list.get(j);   } endTime = Calendar.getInstance().getTimeInMillis();   System.out.println('Using [int j = list.size(); j> size ; j--] :: ' + (endTime - startTime) + ' ms');   } } // Ce code est contribué par Ayush Choudhary @gfg(code_ayush) Sortie Pour chaque boucle :: 45 ms Utilisation de collection.size() :: 11 ms En calculant d'abord collection.size() :: 13 ms Utilisation de [int j = liste.size(); j> taille ; j--] :: 15 ms Articles connexes : For-each en C++ vs Java Iterator vs For-each en Java>