Podmienka: Rozhodovanie v Jave
For-each je ďalšia technika prechádzania poľom, ako napríklad slučka for, slučka while, slučka do-while predstavená v jazyku Java5.
- Začína kľúčovým slovom pre ako normálny for-loop.
- Namiesto deklarovania a inicializácie premennej počítadla cyklu deklarujete premennú, ktorá je rovnakého typu ako základný typ poľa, za ktorou nasleduje dvojbodka, za ktorou nasleduje názov poľa.
- V tele cyklu môžete namiesto indexovaného prvku poľa použiť premennú cyklu, ktorú ste vytvorili.
- Bežne sa používa na iteráciu poľa alebo triedy Collections (napr. ArrayList)
Syntax:
for (type var : array) { statements using var; }>
Jednoduchý program s pre každú slučku:
Java
typy spojení v rdbms
/*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 +> ' '> );> > }> }> |
podčiarknuť pomocou css
>
>Výkon
10 50 60 80 90>
Vyššie uvedená syntax je ekvivalentná:
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; } } Výstup Najvyššie skóre je 132 Obmedzenia rozhodovania pre každú slučku Cykly pre každú slučku nie sú vhodné, ak chcete upraviť pole : for (int num : značky) { // zmení iba num, nie prvok poľa num = num*2; } 2. Cykly For-each nesledujú index . Takže nemôžeme získať index poľa pomocou cyklu For-Each for (int num : čísla) { if (num == cieľ) { return ???; // nepoznám index num } } 3. For-each iba iteruje dopredu cez pole v jednotlivých krokoch // nedá sa konvertovať na cyklus for-each for (int i=čísla.dĺžka-1; i>0 ; i--) { System.out.println(čísla[i]); } 4. For-each nedokáže spracovať dva rozhodovacie príkazy naraz // sa nedá ľahko konvertovať na cyklus for-each for (int i=0; i 5. For-each má tiež určitú réžiu výkonu oproti jednoduchej iterácii: Java / *baliť čokoľvek //nepíšte sem názov balíka */ import java.util.*; class GFG { public static void main (String[] args) { Zoznam zoznamu = new ArrayList(); čas začiatku; dlhý čas konca pre (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 = zoznam.get(j); } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('Pomocou [int j = list.size(); j> size ; j--] :: ' + (endTime - startTime) + ' ms'); } } // Tento kód prispel Ayush Choudhary @gfg(code_ayush) Výstup Pre každú slučku :: 45 ms Použitie collection.size() :: 11 ms Prvým výpočtom collection.size() :: 13 ms Použitie [int j = zoznam.velkost(); j> veľkosť; j--] :: 15 ms Súvisiace články: For-each v C++ vs Java Iterator vs For-each v Java>