JavaRush /Java-Blog /Random-DE /for-each-Schleife in Java

for-each-Schleife in Java

Veröffentlicht in der Gruppe Random-DE

Was ist foreach in Java?

For-each ist eine Art for-Schleife, die verwendet wird, wenn Sie alle Elemente eines Arrays oder einer Sammlung verarbeiten müssen. „Für jeden“ wird aus dem Englischen als „für alle“ übersetzt. Tatsächlich wird der Ausdruck foreach selbst in diesem Zyklus nicht verwendet. Seine Syntax ist wie folgt:
for (type itVar : array)
{
    Блок операторов;
}
Wo typeist der Typ der iterativen Variablen (derselbe wie der Datentyp im Array!), itVarist ihr Name, arrayist das Array (es kann auch eine andere Datenstruktur geben, zum Beispiel eine Art Sammlung ArrayList), also das Objekt, auf dem die Schleife ausgeführt wird. Wie Sie sehen, wird in diesem Entwurf kein Zähler verwendet; die Iterationsvariable iteriert über die Elemente eines Arrays oder einer Sammlung und nicht über die Indexwerte. Beim Ausführen einer solchen Schleife wird der Iterationsvariablen nacheinander der Wert jedes Elements des Arrays oder der Sammlung zugewiesen, woraufhin der angegebene Anweisungsblock (oder die Anweisung) ausgeführt wird.

Neben der for-each-Schleife verfügt Java auch über eine forEach()-Methode. Lesen Sie dazu beispielsweise den Artikel „ Hör auf, Zyklen zu schreiben!“ Top 10 der besten Methoden zum Arbeiten mit Sammlungen in Java 8

Aufmerksamkeit:Die for-each-Schleife kann auf Arrays und alle Klassen angewendet werden, die die java.lang.Iterable-Schnittstelle implementieren. Das Äquivalent des obigen Codes wäre die folgende for -Schleife :
for (int i=0; i<array.length; i++)
{

    Блок операторов;
}

Java foreach-Beispiel

Lassen Sie uns eine Reihe von Schülernoten erstellen. Dann drucken wir mit for-each alle Punkte aus, zeigen den durchschnittlichen Punktestand an und ermitteln den maximalen Punktestand.
public class ForEachTest {

//Methode, die alle Noten ausgibt
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int num : grades) {

            System.out.print(num + "|");
        }
        System.out.println();
    }

//Methode, die die durchschnittliche Punktzahl anzeigt

public static double midGrade(int[] numbers) {
        int grade = 0;

        for (int num : numbers) {
            grade = num + grade;
        }
        return ((double) grade / numbers.length);

    }
//Methode, bei der die beste (maximale) Punktzahl berechnet wird
    public static int bestGrade(int[] numbers) {
        int maxGrade = numbers[0];

        for (int num : numbers) {
            if (num > maxGrade) {
                maxGrade = num;
            }
        }
        return maxGrade;
    }

public static void main(String[] args) {

//Array von Bewertungen
int[] grades = {5, 10, 7, 8, 9, 9, 10, 12};


  int highest_marks = bestGrade(grades);
        System.out.print("All the grades: ");
        printAllGrades(grades);
        System.out.println("The highest grade is " + highest_marks);
        System.out.println("The average grade is " + midGrade(grades));
    }

}
Programmausgabe:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
Sehen wir uns nun an, wie eine Methode zum Ausdrucken aller Partituren aussehen würde, die mithilfe einer regulären for-Schleife durchgeführt wird:
public static void printAllGrades(int[] grades) {
        System.out.print("|");
        for (int i = 0; i < grades.length; i++) {

            System.out.print(grades[i] + "|");
        }
        System.out.println();
    }
Wenn wir diese Methode über die Methode aufrufen main, erhalten wir das Ergebnis:
All the grades: |5|10|7|8|9|9|10|12|

Ein Beispiel für die Verwendung einer for-each-Schleife mit Sammlungen

Lassen Sie uns eine Sammlung von Namen erstellen und alle Namen auf dem Bildschirm anzeigen.
List<String> names = new ArrayList<>();
        names.add("Snoopy");
        names.add("Charlie");
        names.add("Linus");
        names.add("Shroeder");
        names.add("Woodstock");

        for(String name : names){
            System.out.println(name);
        }

Einschränkungen der for-each-Schleife

Die kompakte Form von for-each gilt als besser lesbar als for, und es gilt als bewährte Praxis, for-each dort zu verwenden, wo dies möglich ist. Allerdings ist for-each ein weniger vielseitiges Konstrukt als reguläres for. Hier sind ein paar einfache Fälle, in denen die Verwendung von for-each überhaupt nicht oder nur mit Schwierigkeiten funktioniert.
  1. Wenn Sie eine Schleife vom Ende zum Anfang durchlaufen möchten. Das heißt, es gibt kein direktes for-each-Analogon zum folgenden Code:

    for (int i = array.length - 1; i >= 0; i--)
    {
          System.out.println(array[i]);
    }
  2. For-each ist nicht geeignet, wenn Sie Änderungen an einem Array vornehmen möchten. Beispielsweise ist es nicht möglich, ein Array zu sortieren, ohne seine Elemente auszutauschen. Oder im folgenden Code ändert sich nicht das Array-Element, sondern nur die Iterationsvariable:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. Wenn Sie nach einem Element in einem Array suchen und den Index des gesuchten Elements zurückgeben (oder weitergeben) müssen, ist es besser, eine reguläre for-Schleife zu verwenden.

Nützliches Video über „for-each“, erstellt von einem JavaRush-Studenten

Schleifen im JavaRush-Kurs

Bei JavaRush beginnen wir mit der praktischen Verwendung von Schleifen auf Stufe 4 der Java-Syntax-Quest . Ihnen sind mehrere Vorlesungen gewidmet sowie viele Aufgaben unterschiedlichen Niveaus, um die Fähigkeiten im Umgang mit ihnen zu stärken. Im Allgemeinen kann man ihnen nicht entkommen; Schleifen sind eines der wichtigsten Konstrukte in der Programmierung.

Mehr über for-each und Schleifen:

  1. For- und For-Each-Schleife: Die Geschichte, wie ich iterierte, iterierte, aber nicht iterierte – ein guter ausführlicher Artikel über for- und for-each-Schleifen in Java. Entwickelt für einen geschulten Leser (ungefähr JavaRush Level 10 und höher).
  2. While-Anweisung . Der Artikel ist dem einfachsten Zyklus gewidmet while, mit dem Sie beginnen, sich mit Zyklen in JavaRush vertraut zu machen.
  3. Hören Sie auf, Zyklen zu schreiben! Die 10 besten Methoden zum Arbeiten mit Sammlungen in Java 8 . In diesem Artikel wird ein JavaRush-Student, der bereits die Hälfte des Kurses oder mehr abgeschlossen hat, viel über die Arbeit mit Sammlungen lernen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION