Zum Inhalt springen
Lektion 21 von 26 16 Min. Fortgeschritten Zur Übung Mit Codebeispiel

Lambdas & Streams

Lambdas, Streams und Optional bringen funktionale Ideen nach Java — kompakter Code für Datenverarbeitung.

Ansicht

01

Verstehen

Lies die Kernidee und das Beispiel.

02

Prüfen

Beantworte die Aktiv-Checks.

03

Anwenden

Setze die Transferaufgabe um.

Mini-Erfolg

Du hast eine Liste gefiltert, transformiert und sortiert, ohne eine einzige Schleife zu schreiben.

Warum das wichtig ist: Lambdas und Streams machen Datenverarbeitung kürzer und lesbarer — wenn man sie nicht übertreibt.

Das darf schwer sein

Das ist ein Fortgeschrittenen-Thema. Lies es einmal in Ruhe, baue das Mini-Projekt und komm später zurück. Du musst es nicht sofort können.

Vorher hilfreich

Lerninhalt

Verstehen & anwenden

1

Lambdas

Ein Lambda ist eine anonyme Funktion: (parameter) -> ausdruck.

Es implementiert ein funktionales Interface wie Predicate oder Function.

lambda->
Lambda
namen.forEach(name -> System.out.println(name));
// oder mit Methodenreferenz:
namen.forEach(System.out::println);
2

Streams

Streams verarbeiten Collections in Schritten: filtern, transformieren, sammeln.

filter, map und collect entsprechen den Array-Methoden aus JavaScript.

stream()filter()map()collect()
Stream-Pipeline
List<String> grosse = namen.stream()
    .filter(n -> n.length() > 3)
    .map(String::toUpperCase)
    .toList();
3

Optional

Optional macht sichtbar, dass ein Wert fehlen kann — statt heimlicher null-Werte.

orElse liefert einen Ersatzwert, ifPresent führt Code nur bei Vorhandensein aus.

OptionalorElse()
Optional
Optional<String> erster = namen.stream()
    .filter(n -> n.startsWith("A"))
    .findFirst();

String name = erster.orElse("Niemand");

Vertiefung

Deklarativ statt Schleife

Streams beschreiben, was mit den Daten passieren soll: filtern, transformieren, sortieren, sammeln. Die Schleife im Detail übernimmt die Bibliothek.

Streams sind lazy: filter und map laufen erst, wenn eine Endoperation wie toList() oder forEach() kommt. Optional ist kein Ersatz für jede null-Prüfung, aber ein ehrlicher Hinweis auf ein mögliches Fehlen.

Pipeline lesen
List<String> titel = karten.stream()
    .filter(k -> k.modul().equals("java"))
    .map(k -> k.titel().toUpperCase())
    .sorted()
    .toList();

Merksatz: Streams machen Datenflüsse lesbar. Nicht jede Schleife ersetzen — bei komplexer Logik ist eine normale Schleife oft klarer.

Übungsaufgabe

Lernkarten-Filter

Baue eine Liste von Lernkarten (Record), filtere nach Modul, wandle Titel in Großbuchstaben um und sortiere sie.

Das soll dein Programm können

  • Record Lernkarte(Modul, Titel)
  • Filter nach einem Modul
  • map auf Großbuchstaben
  • sorted und toList

Schreibe den Code hier oder in deiner IDE und vergleiche ihn dann mit der Lösung.

Dein Code wird automatisch auf diesem Gerät gespeichert.

Hinweis anzeigen

Die Kette beginnt mit karten.stream(). Für den Modulvergleich bietet sich equals an; für die Ausgabe forEach(System.out::println).

Lösung anzeigen
Lernkarten-Filter.java
import java.util.*;

public class KartenFilter {
    record Lernkarte(String modul, String titel) {}

    public static void main(String[] args) {
        List<Lernkarte> karten = List.of(
            new Lernkarte("java", "Generics"),
            new Lernkarte("html", "Semantik"),
            new Lernkarte("java", "Streams")
        );

        List<String> titel = karten.stream()
            .filter(k -> k.modul().equals("java"))
            .map(k -> k.titel().toUpperCase())
            .sorted()
            .toList();

        titel.forEach(System.out::println);
    }
}

Warum funktioniert das?

Die Pipeline ist von oben nach unten lesbar: Quelle, Filter, Transformation, Sortierung, Ergebnis. Der Ursprungsliste wird nichts verändert.

Aktiv-Check

Teste dein Verständnis

1/6

Erkennen: Welcher Abschnitt passt?

Welcher Abschnitt passt zu diesen Begriffen?

lambda->
Tipp: Erst erinnern, dann prüfen. Fehler sind Teil des Lernens.

Spaßprojekt

Lernkarten-Filter

Baue eine Liste von Lernkarten, filtere nach Modul, gib die Titel in Großbuchstaben aus und sortiere sie.

Selbstcheck

Kann ich das schon?

Hake ab, was du wirklich erklären oder selbst bauen könntest.

0 von 3 geschafft

Fortschritt

Bereit zum Abschließen?

Markiere die Lektion als abgeschlossen, um XP und Streak zu erhalten.

</> Learn-Program © 2026 · Lizenziert unter CC BY-NC-SA 4.0

Rechtliches & Lizenz