Lädt...

Lambda in Java

Du übergibst forEach eine kurze Aktion mit einem Pfeil. In Cue.java behältst du die public Klasse Cue, importierst java.util.ArrayList, speicherst "oak" in einer typisierten Liste und rufst names.forEach(n -> System.out.println(n)); auf. Kompiliere mit javac Cue.java und starte java Cue. Der Bildschirm sollte oak zeigen. Eine zweite Demo fügt "pine" hinzu, sodass der Bildschirm oak, dann pine zeigt. Lass optionale Streams für die nächste Seite. Diese Lektion ist ein an forEach übergebenes Lambda, kein Generics-get(0)-Demo und keine Kommandozeilen-args.

Ein Element, ein Lambda-Druck

Öffne Cue.java. Behalte den public Klassennamen Cue. Lösche übrige Bin-Generics-Demos, übrige Programmargumente-Flag-Läufe, übrige Box-Scanner-Prompts und übrige Shelf-Historie, wenn sie die Lambda-Geschichte verdecken. Das Programm darf nicht auf Tippen warten und braucht keine Startwörter.
Füge oben den Import hinzu:
import java.util.ArrayList;
In Cue.main baust du eine typisierte Liste, fügst ein Wort hinzu und übergibst forEach ein Lambda:
ArrayList<String> names = new ArrayList<>();
names.add("oak");
names.forEach(n -> System.out.println(n));
Der Teil n -> System.out.println(n) ist das Lambda. n ist der Parametername für ein Element. Der Pfeil -> zeigt auf den Rumpf, der für dieses Element läuft. forEach ruft diesen Rumpf einmal für "oak" auf. Der Bildschirm zeigt oak.

Cue forEach lambda prints oak

java
import java.util.ArrayList;

public class Cue {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("oak");
        names.forEach(n -> System.out.println(n));
    }
}

Im Ordner mit Cue.java startest du javac Cue.java. Wenn Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Dann startest du java Cue — nicht java Cue.java. Behalte eine public Klasse, damit der Name zu Cue passt.
Geh den Lauf einmal durch. Java startet bei Cue.main. Die Liste hält "oak". forEach nimmt das Lambda. Beim ersten (und einzigen) Element ist n gleich "oak" und println schreibt oak. Nichts ruft get(0) in dieser Lehrform auf. Nichts druckt 3 aus einer Integer-Bin-Demo. Nichts liest args[0].
Sag dir die Anfängerregel beim Blick auf den Bildschirm: forEach läuft die Liste ab; das Lambda ist die Aktion pro Element; der Pfeil trennt Parameter und Rumpf. Erfinde auf dieser Seite keine Streams-Pipelines. Streams wartet auf die nächste optionale Lektion. Ersetze das Lambda nicht durch eine vollständige benannte Methode in dieser Lehrdatei — behalte die Pfeilform.
Wenn du in einer übrigen Bin-Datei nur oak über names.get(0) siehst, wechsle zu Cue und behalte die forEach-Zeile. Wenn javac den Pfeil ablehnt, prüfe, ob du -> getippt hast und das Lambda in forEach(...) sitzt.

Zwei Elemente, dasselbe Lambda

Behalte dieselbe public Klasse Cue. Füge vor forEach ein zweites Wort hinzu:
names.add("oak");
names.add("pine");
names.forEach(n -> System.out.println(n));
Kompiliere erneut mit javac Cue.java und starte java Cue. Der Bildschirm zeigt oak, dann pine. forEach führt das Lambda einmal pro Element der Reihe nach aus. Der Lambda-Rumpf ändert sich nicht. Nur die Listenlänge hat sich geändert.

Cue forEach lambda prints oak then pine

java
import java.util.ArrayList;

public class Cue {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("oak");
        names.add("pine");
        names.forEach(n -> System.out.println(n));
    }
}

Geh den Lauf einmal durch. Erster Aufruf: n ist "oak", drucke oak. Zweiter Aufruf: n ist "pine", drucke pine. Behalte beide Demos als zwei Lehrformen. Zuerst beweist du einen Lambda-Druck. Dann beweist du dasselbe Lambda bei zwei Elementen. Beide Formen teilen Import, typisierte Liste und n -> System.out.println(n).
Wenn du die ganze Liste mit println(names) statt forEach ausgibst, siehst du Klammern und Kommas — das ist eine andere Gewohnheit. Diese Seite behält einen Druck pro Element über das Lambda.

Lambda ist nicht nur Generics und nicht Streams

Generics benannte den Elementtyp in ArrayList<String>. Lambda gibt forEach eine kurze Aktion, ohne auf dieser Seite eine separate benannte Methode zu schreiben. Streams verknüpft später weitere Listenschritte auf einer optionalen Seite. Mische diese drei Aufgaben heute nicht in einer Anfängerdatei.
oak hier ist ein Listenelement, das forEach besucht. Es ist nicht args[0] von Flag und keine Scanner-Antwort. Wenn eine übrige Bin-Datei nur get(0) druckt, lass das als Historie und behalte Cues forEach-Zeile. Wenn eine übrige Flag-Datei noch java Flag oak braucht, lass diese Startgewohnheit beiseite und starte schlicht java Cue.
Ohne Pfeil kann javac die Aktion nicht als Lambda behandeln. Ohne forEach hat das Lambda in dieser Lehrform keinen Ort zum Laufen. Behalte beide Teile zusammen beim Üben. Halte Streams-Syntax wie .stream().map von dieser Seite fern bis zu jener Lektion, auch wenn du das Wort Stream woanders in einer Überschrift gesehen hast.

Ordner-Checks vor Streams

Liste den Ordner nach erfolgreichem Compile. Du solltest Cue.java und Cue.class zusammen sehen. Bearbeite die Quelle, speichere, starte javac Cue.java, dann java Cue. Eine veraltete .class kann einen alten Einzeilen-Bildschirm zeigen, wenn du nach "pine" ohne Compile weiterläufst.
Wenn javac über doppelte public Klassen meckert, bleib nur Cue public. Wenn der Bildschirm [oak, pine] in einer Zeile zeigt, hast du das Listenobjekt gedruckt — wechsle zurück zu forEach mit println im Lambda. Wenn nichts druckt, bestätige, dass add vor forEach lief.
Klebe Bin-get(0) nicht als Ersatz für das Lambda auf dieser Seite. Klebe keine Flag-Startwörter in den Run-Befehl. Der optionale Lambda-Job ist forEach mit Pfeil-Rumpf.

Vor optionalem Streams

Du kannst public Klasse Cue behalten, ArrayList importieren, "oak" hinzufügen, names.forEach(n -> System.out.println(n)); aufrufen, oak sehen, dann "pine" hinzufügen und oak dann pine sehen. Kompiliere mit javac Cue.java und starte java Cue. Die nächste optionale Seite ist Streams.
Behalte die Cue-Demos für ein klares Lambda-Paar. Halte Bin-Generics-Dateien von dieser Seite fern, wenn du forEach übst. Halte Flag-Argument-Dateien von dieser Seite fern, wenn du forEach übst. Halte Streams-Arbeit von dieser Seite fern bis zu jener Lektion. Diese Gewohnheiten sind der Checkpoint vor dem Weitergehen. Wenn der Ein-Wort-Bildschirm oak zeigt oder der Zwei-Wort-Bildschirm oak dann pine, hat Lambda seine Aufgabe für diese Lektion erledigt und du bist bereit für Streams, wenn du den optionalen Pfad fortsetzt.
Ein letzter Blick in den Ordner: ein public Cue, Import da, typisiertes ArrayList<String>, forEach mit n -> System.out.println(n), kein Scanner-Warten, keine Startwörter nötig. Starte javac Cue.java und java Cue noch einmal mit der Demo, die du offen hast. Wenn der Bildschirm weiter oak oder oak dann pine zeigt, ist die Lambda-Form solide und der Kurs kann auf der nächsten Seite zu optionalem Streams wechseln. Bevorzuge pro Durchgang eine klare forEach-Gewohnheit, damit jeder Pass dieselbe Karte lehrt.

🧠 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