Voraussetzung: Entscheidungsfindung in Java
For-each ist eine weitere Array-Traversierungstechnik wie die in Java5 eingeführte for-Schleife, while-Schleife und do-while-Schleife.
- Es beginnt mit dem Schlüsselwort für wie eine normale for-Schleife.
- Anstatt eine Schleifenzählervariable zu deklarieren und zu initialisieren, deklarieren Sie eine Variable, die denselben Typ wie der Basistyp des Arrays hat, gefolgt von einem Doppelpunkt, auf den dann der Name des Arrays folgt.
- Im Schleifenkörper können Sie die von Ihnen erstellte Schleifenvariable anstelle eines indizierten Array-Elements verwenden.
- Es wird häufig zum Durchlaufen eines Arrays oder einer Collections-Klasse (z. B. ArrayList) verwendet.
Syntax:
for (type var : array) { statements using var; }> Einfaches Programm mit for every-Schleife:
Java
Javascript-Onload-Skript
/*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 +>' '>);> >}> }> |
>
>Ausgabe
etwas schnelles sortieren
10 50 60 80 90>
Die obige Syntax entspricht:
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; } } return maxSoFar; } } Ausgabe Die höchste Punktzahl beträgt 132. Einschränkungen bei der Entscheidungsfindung in der For-each-Schleife. For-each-Schleifen sind nicht geeignet, wenn Sie das Array ändern möchten: for (int num : markers) { // ändert nur num, nicht das Array-Element Anzahl = Anzahl*2; } 2. For-Each-Schleifen verfolgen nicht den Index. Daher können wir den Array-Index nicht mithilfe der For-Each-Schleife ermitteln. for (int num : zahlen) { if (num == target) { return ???; // kenne den Index von num nicht } } 3. For-each durchläuft das Array nur in Einzelschritten vorwärts // kann nicht in eine for-each-Schleife konvertiert werden for (int i=numbers.length-1; i>0 ; i--) { System.out.println(numbers[i]); } 4. For-each kann nicht zwei Entscheidungsanweisungen gleichzeitig verarbeiten // kann nicht einfach in eine for-each-Schleife konvertiert werden for (int i=0; i 5. For-each hat auch einen gewissen Leistungsaufwand gegenüber einfacher Iteration: Java / *Paket was auch immer //Paketname hier nicht schreiben */ import java.util.*; import java.util.*; public static void main (String[] args) { List list = new ArrayList(); 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 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'); } } // Dieser Code wurde von Ayush Choudhary @gfg(code_ayush) beigesteuert. Ausgabe für jede Schleife:: 45 ms, Verwendung von „collection.size()“:: 11 ms, indem zuerst „collection.size()“ berechnet wird::: 13 ms, Verwendung von [int j = list.size(); j> Größe ; j--] :: 15 ms Verwandte Artikel: For-each in C++ vs. Java Iterator vs. For-each in Java>