logo

Pętla for-each w Javie

Wymagania wstępne: Podejmowanie decyzji w języku Java
For-each to kolejna technika przechodzenia po tablicy, taka jak pętla for, pętla while i pętla do-while wprowadzona w Javie5.

  • Zaczyna się od słowa kluczowego Do jak zwykła pętla for.
  • Zamiast deklarować i inicjować zmienną licznika pętli, deklarujesz zmienną tego samego typu, co typ podstawowy tablicy, po której następuje dwukropek, po którym następuje nazwa tablicy.
  • W treści pętli możesz użyć utworzonej zmiennej pętli zamiast indeksowanego elementu tablicy.
  • Jest powszechnie używany do iteracji po tablicy lub klasie Collections (np. ArrayList)

Składnia:

for (type var : array) { statements using var; }>

Prosty program z każdą pętlą:



Jawa

obraz przeceny




/*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 +>' '>);> >}> }>

>

>

wyrównanie tekstu CSS
Wyjście

10 50 60 80 90>

Powyższa składnia jest równoważna:

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 = liczba;   } } zwróć maxSoFar;   } } Wynik Najwyższy wynik to 132. Ograniczenia w podejmowaniu decyzji w pętli for-each. Pętle For-each nie są odpowiednie, gdy chcesz zmodyfikować tablicę: for (int num : znaczniki) { // zmienia tylko liczbę, a nie element tablicy liczba = liczba*2; } 2. Pętle for-each nie śledzą indeksu. Nie możemy więc uzyskać indeksu tablicy za pomocą pętli For-Each for (int num : Numbers) { if (num == target) { return ???; // nie znam indeksu num } } 3. For-each iteruje tylko do przodu po tablicy w pojedynczych krokach // nie można przekonwertować na pętlę for-each for (int i=numbers.length-1; i>0 ; i--) { System.out.println(liczby[i]); } 4. For-each nie może przetworzyć dwóch instrukcji decyzyjnych na raz // nie można go łatwo przekonwertować na pętlę for-each for (int i=0; i 5. For-each ma również pewien narzut wydajności w porównaniu z prostą iteracją: Java / *pakiet dowolny //nie wpisuj tutaj nazwy pakietu */ import java.io.*; import java.util.*; public static void main (String[] args) { Lista list = nowa ArrayList(); czas rozpoczęcia; długi czas zakończenia; for (int i = 0; tj<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');   } } // Ten kod został napisany przez Ayusha Choudhary’ego @gfg(code_ayush) Dane wyjściowe Dla każdej pętli :: 45 ms Użycie kolekcji.size() :: 11 ms Obliczenie najpierw kolekcji.size() :: 13 ms Użycie [int j = lista.rozmiar(); j> rozmiar ; j--] :: 15 ms Powiązane artykuły: For-each w C++ vs Java Iterator vs For-each w Javie>