15_Lambda

Code-Dateien

DateinameAktion
CODECode_Fahrzeug.zipDownload
CODECode_Student.zipDownload

Videos

DateinameAktion
VIDEOVideo_Fahrzeug_DAbspielen
VIDEOVideo_Student_DAbspielen

Lernmaterialien

Lambda

Lambda-Expressions in Java sind kurze Schreibweisen für kleine Funktionen, die du als Wert behandeln und z. B. an Methoden übergeben kannst. Sie machen Code oft kürzer und lesbarer, besonders bei Listen/Streams und Event-Handlern.

Grundidee

Statt eine anonyme Klasse zu schreiben …

Runnable r = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hallo");
    }
};

… kannst du mit Lambda viel kürzer schreiben:

Runnable r = () -> System.out.println("Hallo");

Aufbau (ganz simpel)

Ein Lambda sieht so aus:

(parameter) -> { code }

Beispiele:

  • Keine Parameter: () -> System.out.println("Hi")

  • Ein Parameter: x -> x * 2

  • Mehrere Parameter: (a, b) -> a + b

Wofür braucht man das?

Lambdas funktionieren in Java immer mit Functional Interfaces: das sind Interfaces mit genau einer abstrakten Methode (z. B. Runnable, Comparator, Predicate, Function, …).

Beispiel: Student

Ohne Lambda:

    public void sortAlter() {
        Collections.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                return s1.getAlter() - s2.getAlter();
            }
        });
    }

Mit Lambda:

    public void sortAlter2() {
        Collections.sort(students, (s1, s2) -> s1.getAlter() - s2.getAlter());
    }

Oder noch kürzer (Method Reference):

    public void sortAlter3() {
        students.sort(Comparator.comparingInt(Student::getAlter));
    }

    public void sortName2() {
        students.sort(Comparator.comparing(Student::getName).reversed());
    }

Merksatz

Lambda = “kleine Funktion ohne Namen”, die man schnell weitergeben kann.