-
Notifications
You must be signed in to change notification settings - Fork 2
Tag 29 Lamdas & Streams
Lambda-Funktion sind kleine Funktionen, die einzelne Logikschritte ausführen. Eine Lamdafunktion kann als Parameter an eine andere Funktion übergeben werden. Sie ermöglicht es, Funktionsobjekte zu erstellen, die verwendet werden können, um Code auf eine kürzere und lesbarere Weise zu schreiben.
Eine Lambda-Funktion besteht aus einer Parameterliste, einem Pfeil-Operator "->" und dem Body der Funktion. Der Körper der Funktion kann aus einer einzelnen Anweisung oder einem Block von Anweisungen bestehen.
Spezielle Lada-Funktionensobjekte sind z.B.:
- Function: nur Eingabewert & Ausgabewert
- Consumer: nur Eingabewert, kein Ausgabewert
- Predicate: nimmt einen Eingabewert, gibt einen Boolean zurück
Allgemeine Lambda Schreibweise:
(parameter) -> {body}
Lambda mit 1 Parameter und one-line Logik
parameter -> body
Lambda ohne Parameter und one-line Logik
() -> body
Lambda mit 2 Parametern und one-line Logik
(parameter 1, parameter 2) -> body;
Lambda mit 1 Parameter und multi-line Logik
parameter -> {
zeile 1;
zeile 2;
return ausgabe;
}
Zuweisung Lambda function zu addOneToLambda variablen:
Function<Integer, Integer> addOneToLambda = num -> num + 1;
Aufruf der function (Achtung, geht nur mit .apply)
System.out.println(addOneToLambda.apply(1));
Anwendung der forEach() Methode mit lambda function als Übergabeparameter:
List.of(1, 2, 3, 4, 5, 6).forEach(num -> System.out.println(num));
In Java sind Streams eine leistungsstarke Funktion, die es ermöglicht, eine Sequenz von Objekten in einer Collection oder Array zu manipulieren und zu transformieren. Ein Stream kann als eine Folge von Daten betrachtet werden, die in der Regel von einer Quelle wie einer Liste, einem Array oder einem Dateisystem stammen und dann auf verschiedene Weise verarbeitet werden können.
Streams bieten viele Methoden, die es ermöglichen, Daten zu filtern, zu transformieren, zu sortieren und zu reduzieren.
Bei uns: Streams sind eine Aneinanderkettung von Lamdas, die auf einen Array oder eine Collection angewendet werden.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Emma", "Frank");
List<String> result = names.stream()
`.filter(name -> name.length() > 4)` // Filtert Namen mit mehr als 4 Buchstaben
`.map(name -> name.toUpperCase())` // Wandelt Namen in Großbuchstaben um
`.sorted()` // Sortiert die Namen alphabetisch
`.collect(Collectors.toList());` // Sammelt die Ergebnisse in einer Liste
System.out.println(result); // Gibt die Liste ["ALICE", "CHARLIE", "DAVID", "EMMA", "FRANK"] aus