Voorwaarde: besluitvorming in Java
For-each is een andere techniek voor het doorkruisen van arrays, zoals for loop, while loop, do-while loop geïntroduceerd in Java5.
- Het begint met het trefwoord voor zoals een normale for-loop.
- In plaats van een lustellervariabele te declareren en te initialiseren, declareert u een variabele die van hetzelfde type is als het basistype van de array, gevolgd door een dubbele punt, die vervolgens wordt gevolgd door de arraynaam.
- In de hoofdtekst van de lus kunt u de lusvariabele gebruiken die u hebt gemaakt in plaats van een geïndexeerd array-element te gebruiken.
- Het wordt vaak gebruikt om een array of een Collections-klasse te herhalen (bijvoorbeeld ArrayList)
Syntaxis:
for (type var : array) { statements using var; }> Eenvoudig programma met voor elke lus:
Java
commando chown
/*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 +>' '>);> >}> }> |
>
>
dynamische array javaUitvoer
10 50 60 80 90>
De bovenstaande syntaxis is gelijk aan:
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; } } retourneer maxSoFar; } } Uitvoer De hoogste score is 132 Beperkingen bij de besluitvorming over for-each-lussen For-each-lussen zijn niet geschikt als je de array wilt wijzigen: for (int num: marks) {// verandert alleen num, niet het array-element aantal = aantal*2; } 2. For-each-lussen houden index niet bij. We kunnen dus geen array-index verkrijgen met de For-Each-lus voor (int num: getallen) { if (num == target) { return ???; // ken de index van num } } 3. For-each itereert alleen in enkele stappen vooruit over de array // kan niet worden geconverteerd naar een for-each lus voor (int i=numbers.length-1; i>0 ; ik--) { System.out.println(nummers[i]); } 4. For-each kan niet twee besluitvormingsinstructies tegelijk verwerken // kan niet eenvoudig worden geconverteerd naar een for-each-lus voor (int i=0; i 5. For-each heeft ook enige prestatieoverhead ten opzichte van eenvoudige iteratie: Java / *pakket wat dan ook //schrijf hier geen pakketnaam */ import java.io.*; import java.util.*; import java.util.*; public static void main (String[] args) { Lijstlijst = new ArrayList(); starttijd; lange eindtijd (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 = lijst.get(j); } endTime = Kalender.getInstance().getTimeInMillis(); System.out.println('Gebruik [int j = list.size(); j> size ; j--] :: ' + (endTime - startTime) + ' ms'); } } // Deze code is bijgedragen door Ayush Choudhary @gfg(code_ayush) Uitvoer Voor elke lus :: 45 ms Met behulp van collection.size() :: 11 ms Door eerst collection.size() te berekenen :: 13 ms Met behulp van [int j = lijst.grootte(); j> maat; j--] :: 15 ms Gerelateerde artikelen: For-each in C++ versus Java Iterator versus For-each in Java>