Lädt...

Iterieren in Java

Erstelle eine ArrayList<String> namens tags, füge oak dann pine hinzu und gehe die Liste mit for (String t : tags) durch, wobei du jedes Wort druckst. Kompiliere Lane.java und führe java Lane aus. Der Bildschirm soll zwei Zeilen zeigen: oak, dann pine. Jeder Schleifendurchlauf druckt einen Wert. Jeden Wert der Sammlung zu durchlaufen ist, was diese Seite lehrt.

Jeden Wert einmal durchlaufen

Auf der HashSet-Seite hast du size und contains ohne Schleife geprüft. Auf der früheren for-each-Seite im Kurs bist du ein festes Array durchlaufen. Diese Seite durchläuft eine ArrayList auf dieselbe for-each-Art und zeigt dann einen indexierten Lauf mit get. Die Sammlung wächst zuerst mit add. Die Schleife kommt, nachdem die Werte gespeichert sind.
Öffne Lane.java. Behalte den public-Klassennamen Lane, damit er zum Dateinamen passt. Lösche übrig gebliebene HashSet-, contains-, Bin-, Desk- und Map-put/get-Demos. Lösche auch jedes Scanner oder nextLine. Das Programm darf nicht auf Tippen warten.
Oben, über public class Lane, schreibe:
import java.util.ArrayList;
In main erzeuge die Liste und füge zwei Wörter hinzu:
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
Schreibe dann den for-each-Kopf und den Rumpf:
for (String t : tags) { System.out.println(t); }
Der Doppelpunkt steht zwischen Elementtyp-und-Name und der Sammlung. Jeder Durchlauf setzt t auf das nächste Wort. Schreibe in der ersten Demo keinen Zähler. Speichere vor dem Kompilieren.

Lane for-each ArrayList

java
import java.util.ArrayList;

public class Lane {
    public static void main(String[] args) {
        ArrayList<String> tags = new ArrayList<String>();
        tags.add("oak");
        tags.add("pine");
        for (String t : tags) {
            System.out.println(t);
        }
    }
}

Aus dem Ordner, der Lane.java hält, führe javac Lane.java aus. Wenn Klammern, geschweifte Klammern, spitze Klammern, Doppelpunkte und Semikolons passen, schreibt javac keine eigene Zeile. Dann führe java Lane aus — nicht java Lane.java und nicht java ArrayList. Lass die Endung .java beim Startbefehl weg.
Das Programm soll zwei Zeilen drucken und stoppen: oak, dann pine. Es soll dich nicht tippen lassen. Wenn das Terminal auf Tastatureingabe wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in einer Datei. Lösche diesen Aufruf und behalte das Erzeugen, die zwei add-Zeilen und den for-each.
Geh den Lauf einmal durch. Java startet bei Lane.main. Die Liste hält oak dann pine. Der erste Durchlauf setzt t auf oak und druckt oak. Der zweite setzt t auf pine und druckt pine. Dann endet die Schleife. Nichts anderes soll drucken. Siehst du nur 2, hast du size() statt der Werte gedruckt. Siehst du eine Zeile [oak, pine], hast du das ganze Listenobjekt statt jedes Elements gedruckt — behalte den for-each-Rumpf als println(t). Siehst du true oder leaf, läuft noch eine Bin- oder Desk-Demo — wechsle zu java Lane.
Wenn javac sagt, es findet ArrayList nicht, fehlt der Import oder er steht nach der Klassenzeile. Setze import java.util.ArrayList; über public class Lane. Schreibst du for (String t : tags) ohne Klammern und später mehr als eine Rumpfzeile, behalte auf dieser Seite den Rumpf als ein println in Klammern, damit die Form klar bleibt. Die Schreibweise des Sammlungsnamens nach dem Doppelpunkt muss zur erzeugten Liste passen: tags, nicht ein übrig gebliebenes slots von der Array-for-each-Seite.

Indexierter Lauf mit get

Eine zweite Demo durchläuft dieselbe Liste mit einem gezählten for und get. Du siehst den Slot-Nummern-Weg neben dem for-each-Weg.

Lane indexed get walk

java
import java.util.ArrayList;

public class Lane {
    public static void main(String[] args) {
        ArrayList<String> tags = new ArrayList<String>();
        tags.add("oak");
        tags.add("pine");
        for (int i = 0; i < tags.size(); i++) {
            System.out.println(tags.get(i));
        }
    }
}

Kompiliere und führe auf dieselbe Weise aus. Der Bildschirm zeigt wieder oak, dann pine. Der Kopf nutzt i ab 0, solange i < tags.size(). Jeder Rumpfaufruf tags.get(i) liest einen Slot. Das ist die get-Gewohnheit der list-methods-Seite in einer Schleife. Bevorzuge die for-each-Datei als ersten Lehrweg, wenn du die Indexnummer nicht auf dem Bildschirm brauchst. Behalte die indexierte Datei, um zu beweisen, dass beide Läufe für diese Liste dieselben zwei Zeilen drucken. Startest du i versehentlich bei 1, wäre das erste gedruckte Wort pine und oak würde übersprungen — halte i bei 0 für den vollständigen Lauf.
Verlasse dich nicht auf HashSet-Druckreihenfolge für einen Quiz-Bildschirm auf dieser Seite. Sets versprechen nicht oak vor pine. Die ArrayList-Demos halten eine stabile Reihenfolge für die zwei Zeilen, die du erwartest. Bleibe bei ArrayList für die Lehrdateien, damit der Quiz-Bildschirm vorhersagbar bleibt.

Größe allein ist kein Lauf

Eine dritte Datei zeigt die Restgewohnheit, nur die Anzahl zu drucken. Das war auf der HashSet-Seite nützlich, ist aber kein Iterieren.

Lane size only not a walk

java
import java.util.ArrayList;

public class Lane {
    public static void main(String[] args) {
        ArrayList<String> tags = new ArrayList<String>();
        tags.add("oak");
        tags.add("pine");
        System.out.println(tags.size());
    }
}

Diese Datei druckt 2 — eine Zahl, nicht die Wörter. Nutze sie nur als Kontrast. Die behaltenen Dateien der Iterier-Lektion drucken jeden Wert mit for-each oder mit indexiertem get. Reiche die size-only-Datei nicht als Quiz-Pfad für den Zwei-Zeilen-Bildschirm ein.

Vergleich mit for-each auf Arrays und HashSet-Checks

Früher durchlief for-each int[]- oder String[]-Slots. Hier funktioniert der Doppelpunkt weiter, aber der rechte Name ist eine ArrayList. Auf der HashSet-Seite antworteten size und contains ohne jeden Wert zu drucken. Diese Seite druckt jeden Wert. Eine übrig gebliebene Bin-contains-Demo ist eine andere Lektion. Für diese Seite behalte Lane mit dem for-each, der oak dann pine druckt.
Wenn alte Bin.java-Dateien noch in der Nähe liegen, lass sie oder lösche sie nur, wenn sie verwirren, welche Klasse du startest. Führe java Lane aus, nachdem du die Laufdatei dieser Lektion kompiliert hast.

Was für Wrappers bleibt

Diese Seite durchläuft Sammlungswerte. Die nächste Seite behandelt Wrapper-Typen wie Integer neben primitivem int, wenn Sammlungen Objekte brauchen. Bleibe hier bei for-each und indexiertem get auf ArrayList. Erfinde auf dieser Seite keine Wrapper-Demos als Pflicht.

Vor den Wrappers

Du kannst java.util.ArrayList importieren, oak und pine hinzufügen und jedes Wort mit for (String t : tags) drucken. Du kannst auch mit for (int i = 0; i < tags.size(); i++) und tags.get(i) durchlaufen. Kompiliere Lane.java und führe java Lane aus. Der Bildschirm zeigt oak dann pine. Die nächste Seite sind Wrappers, wo Objekttypen neben Primitiven für die Speicherung in Sammlungen stehen.
Behalte den Import. Behalte die zwei adds vor der Schleife. Behalte for-each als ersten Lehrlauf. Diese Gewohnheiten sind der Checkpoint, bevor du weitergehst. Wenn nach dem for-each beide Zeilen drucken, hat Iterieren für diese Lektion seine Arbeit getan und du bist bereit für das nächste Thema.

🧠 Testen Sie Ihr Wissen

Bereit zum Start

Testen Sie Ihr Wissen

Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen

❓
5
Fragen
🎯
70%
Zum Bestehen
♾️
∞
Zeit
🔄
∞
Versuche

📝 Anweisungen

  • Lesen Sie jede Frage sorgfältig
  • Wählen Sie die beste Antwort für jede Frage
  • Sie können das Quiz so oft wiederholen, wie Sie möchten
  • Ihr Fortschritt wird oben angezeigt