Předpoklad: Rozhodování v Javě
For-each je další technika procházení pole, jako je smyčka for, smyčka while, smyčka do-while zavedená v Java5.
- Začíná to klíčovým slovem pro jako normální for-loop.
- Namísto deklarace a inicializace proměnné čítače smyčky deklarujete proměnnou, která je stejného typu jako základní typ pole, za kterou následuje dvojtečka, za kterou následuje název pole.
- V těle smyčky můžete místo indexovaného prvku pole použít proměnnou smyčky, kterou jste vytvořili.
- Běžně se používá k iteraci přes pole nebo třídu Collections (např. ArrayList)
Syntax:
for (type var : array) { statements using var; }> Jednoduchý program s pro každou smyčku:
Jáva
js dekódování base64
/*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 +>);> >}> }> |
shehzad poonawala
>
>Výstup
10 50 60 80 90>
Výše uvedená syntaxe 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 Nejvyšší skóre je 132 Omezení rozhodování pro každou smyčku Smyčky pro každou smyčku nejsou vhodné, když chcete upravit pole : for (int num : značky) { // změní pouze num, nikoli prvek pole num = num*2; } 2. Cykly For-each nesledují index . Nemůžeme tedy získat index pole pomocí cyklu For-Each for (int num : čísla) { if (num == cíl) { return ???; // neznám index num } } 3. For-each pouze iteruje vpřed přes pole v jednotlivých krocích // nelze převést na cyklus for-each for (int i=čísla.délka-1; i>0 ; i--) { System.out.println(čísla[i]); } 4. For-each nemůže zpracovat dva rozhodovací příkazy najednou // nelze snadno převést na cyklus for-each for (int i=0; i 5. For-each má také určitou výkonnostní režii oproti jednoduché iteraci: Java / *balíček cokoliv //nepište sem jméno balíčku */ import java.util.*; class GFG { public static void main (String[] args) { Seznam seznam = new ArrayList(); počáteční čas; dlouhý čas ukončení pro (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 = seznam.get(j); } endTime = Calendar.getInstance().getTimeInMillis(); System.out.println('Pomocí [int j = list.size(); j> velikost ; j--] :: ' + (endTime - startTime) + ' ms'); } } // Tento kód přispěl Ayush Choudhary @gfg(code_ayush) Výstup Pro každou smyčku :: 45 ms Použití collection.size() :: 11 ms Prvním výpočtem collection.size() :: 13 ms Použití [int j = seznam.velikost(); j> velikost ; j--] :: 15 ms Související články: For-each v C++ vs Java Iterator vs For-each v Javě>