Forudsætning: Beslutningstagning i Java
For-each er en anden array-gennemløbsteknik som for loop, mens loop, do-while loop introduceret i Java5.
- Det starter med nøgleordet til som en normal for-loop.
- I stedet for at erklære og initialisere en loop-tællervariabel, erklærer du en variabel, der er den samme type som arrayets basistype, efterfulgt af et kolon, som derefter efterfølges af arraynavnet.
- I loop-kroppen kan du bruge den loop-variabel, du har oprettet, i stedet for at bruge et indekseret array-element.
- Det bruges almindeligvis til at iterere over et array eller en samlingsklasse (f.eks. ArrayList)
Syntaks:
for (type var : array) { statements using var; }> Simpelt program med for hver sløjfe:
Java
tuple java
fjern første tegn excel
/*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 +>' '>);> >}> }> |
>
>Produktion
10 50 60 80 90>
Ovenstående syntaks svarer til:
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 = antal; } } returner maxSoFar; } } Output Den højeste score er 132 Begrænsninger for beslutningstagning for hver sløjfe For-hver sløjfe er ikke passende, når du vil ændre arrayet : for (int num : marks) {// ændrer kun num, ikke array-elementet num = num*2; } 2. For-each-løkker holder ikke styr på indekset. Så vi kan ikke opnå array-indeks ved hjælp af For-Each-løkke for (int num : tal) { if (num == target) { return ???; // kender ikke indekset for num } } 3. For-each itererer kun fremad over arrayet i enkelte trin // kan ikke konverteres til en for-each-løkke for (int i=numbers.length-1; i>0 i--) { System.out.println(tal[i]); } 4. For-each kan ikke behandle to beslutningstagningsudsagn på én gang // kan ikke nemt konverteres til en for-each-løkke for (int i=0; i 5. For-each har også nogle præstationsoverhead over simpel iteration: Java / *pakke hvad som helst //skriv ikke pakkenavn her */ import java.util.*; class GFG { public static void main (String[] args) { List list = new ArrayList(); startTime; lang sluttid 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 = liste.get(j); } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('Bruger [int j = list.size(); j> størrelse ; j--] :: ' + (sluttid - starttid) + ' ms'); } } // Denne kode er bidraget af Ayush Choudhary @gfg(code_ayush) Output For hver sløjfe :: 45 ms Brug af collection.size() :: 11 ms Ved at beregne collection.size() først :: 13 ms Brug af [int j = liste.størrelse(); j> størrelse; j--] :: 15 ms Relaterede artikler: For-each i C++ vs Java Iterator vs For-each i Java>