15_Lambda
Code-Dateien
| Dateiname | Aktion |
|---|---|
| CODECode_Fahrzeug.zip | Download |
| CODECode_Student.zip | Download |
Videos
| Dateiname | Aktion |
|---|---|
| VIDEOVideo_Fahrzeug_D | Abspielen |
| VIDEOVideo_Student_D | Abspielen |
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 * 2Mehrere 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.