JLambda-Ausdrücke und Stream API

JavaBeginner
Jetzt üben

Einführung

In diesem Lab lernst du, wie du zwei der wichtigsten Funktionen von Java 8 - Lambda-Ausdrücke und Stream API - verwenden kannst. Lambda-Ausdrücke werden verwendet, um anonyme Funktionen zu erstellen, die als Argumente an andere Methoden übergeben werden können, während der Stream API verwendet wird, um eine Reihe von Operationen auf einer Sammlung auszuführen.

Java-Umgebung einrichten

Zunächst richte die Java-Umgebung ein, indem du die neueste Version von Java auf deinem System installierst. Du kannst Java von der offiziellen Website herunterladen und installieren. Nachdem die Installation abgeschlossen ist, öffne das Terminal und prüfe die Java-Version.

java -version

Eine Java-Datei erstellen

Als nächstes erstelle eine neue Java-Datei im Verzeichnis ~/project mit dem Namen LambdaExpressions.java.

touch ~/project/LambdaExpressions.java

In dieser Datei werden wir Code schreiben, um die Lambda-Ausdrücke und die Stream API zu implementieren.

Verwende einen Lambda-Ausdruck, um die Summe von zwei Zahlen zu berechnen

Lambda-Ausdrücke bieten eine einfache Möglichkeit, anonyme Funktionen zu erstellen. Erstelle ein FunctionalInterface, das eine Funktion darstellt, die zwei Zahlen als Eingabe nimmt und ihre Summe zurückgibt.

interface Calculator {
  int sum(int a, int b);
}

Als nächstes können wir den Lambda-Ausdruck verwenden, um ein Objekt dieses Interfaces zu erstellen und dann die sum()-Funktion mithilfe dieses Objekts aufzurufen.

  Calculator adder = (a, b) -> a + b;
  int result = adder.sum(10, 20);
  System.out.println("Resultat: " + result);

Kompiliere und führe jetzt diesen Code mit dem folgenden Befehl aus:

javac ~/project/LambdaExpressions.java && java LambdaExpressions

Die Ausgabe sollte lauten:

Resultat: 30

Iteriere über eine Sammlung mit der Stream API

Die Stream API wird verwendet, um eine Reihe von Operationen auf einer Sammlung auszuführen. In diesem Schritt lernen wir, wie wir über eine Sammlung von Strings iterieren und Strings herausfiltern, die mit "A" beginnen.

Erstelle eine Liste von Strings, die einige Namen enthält, mit denen wir arbeiten können.

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Andy");

Als nächstes verwende die Stream API, um über diese Sammlung zu iterieren, Strings herauszufiltern, die mit "A" beginnen, und die verbleibenden in die Konsole auszugeben.

  names.stream().filter(s -> s.startsWith("A")).forEach(System.out::println);

Kompiliere und führe jetzt diesen Code mit dem folgenden Befehl aus:

javac ~/project/LambdaExpressions.java && java LambdaExpressions

Die Ausgabe sollte lauten:

Alice
Andy

Verwende die Stream API, um das Maximum und Minimum in einer Liste von ganzen Zahlen zu finden

Die Stream API bietet eine Möglichkeit, eine Reihe von Operationen auf einer Sammlung auszuführen. In diesem Schritt lernen wir, wie wir die Stream API verwenden, um das Maximum und Minimum aus einer Liste von ganzen Zahlen zu finden.

Erstelle eine Liste von ganzen Zahlen

List<Integer> numbers = Arrays.asList(10, 2, 30, 5, 4, 20);

Finde das maximale Element der Liste mit der Stream API.

Optional<Integer> maxNum = numbers.stream().max(Integer::compareTo);
System.out.println("Maximale Zahl: " + maxNum.get());

Finde das minimale Element der Liste mit der Stream API.

Optional<Integer> minNum = numbers.stream().min(Integer::compareTo);
System.out.println("Minimale Zahl: " + minNum.get());

Kompiliere und führe jetzt diesen Code mit dem folgenden Befehl aus:

javac ~/project/LambdaExpressions.java && java LambdaExpressions

Die Ausgabe sollte lauten:

Maximale Zahl: 30
Minimale Zahl: 2

Verwende forEach(), um die Elemente einer Liste auszugeben

Wir können die forEach()-Methode der Stream API verwenden, um über eine Liste zu iterieren und eine Aktion auf jedes Element auszuführen.

Erstelle eine Liste von Strings, die einige Namen enthält, mit denen wir arbeiten können.

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave");

Gebe alle Elemente der Liste mit der forEach()-Methode aus.

names.stream().forEach(System.out::println);

Kompiliere und führe jetzt diesen Code mit dem folgenden Befehl aus:

javac ~/project/LambdaExpressions.java && java LambdaExpressions

Die Ausgabe sollte lauten:

Alice
Bob
Charlie
Dave

Verwende die Stream API, um eine Sammlung zu sortieren

Die Stream API kann verwendet werden, um eine Sammlung zu sortieren. In diesem Schritt lernen wir, wie wir eine Liste von ganzen Zahlen aufsteigend sortieren.

Erstelle eine Liste von ganzen Zahlen, mit denen wir arbeiten können.

List<Integer> numbers = Arrays.asList(1, 3, 2, 4, 5);

Sortiere die Liste aufsteigend mit der sorted()-Methode der Stream API.

numbers.stream().sorted().forEach(System.out::println);

Kompiliere und führe jetzt diesen Code mit dem folgenden Befehl aus:

javac ~/project/LambdaExpressions.java && java LambdaExpressions

Die Ausgabe sollte lauten:

1
2
3
4
5

Verwende die Stream API, um eine Sammlung zu filtern und zu sortieren

In diesem Schritt werden wir die Stream API verwenden, um eine Sammlung von ganzen Zahlen zu filtern und zu sortieren.

Erstelle eine Liste von ganzen Zahlen, mit denen wir arbeiten können.

List<Integer> numbers = Arrays.asList(10, 2, 30, 5, 4, 20);

Filtere nur die geraden Zahlen heraus und sortiere sie in absteigender Reihenfolge mit der sorted()-Methode.

numbers.stream().filter(n -> n % 2 == 0).sorted(Comparator.reverseOrder()).forEach(System.out::println);

Kompiliere und führe jetzt diesen Code mit dem folgenden Befehl aus:

javac ~/project/LambdaExpressions.java && java LambdaExpressions

Die Ausgabe sollte lauten:

30
20
10
4
2

Verwende die Stream API, um den Durchschnitt einer Sammlung zu berechnen

In diesem Schritt lernen wir, wie wir die Stream API verwenden, um den Mittelwert einer Sammlung von ganzen Zahlen zu erhalten.

Erstelle eine Liste von ganzen Zahlen, mit denen wir arbeiten können.

List<Integer> numbers = Arrays.asList(10, 2, 30, 5, 4, 20);

Verwende die average()-Methode der Stream API, um den Mittelwert der Liste zu erhalten.

OptionalDouble avg = numbers.stream().mapToInt(Integer::intValue).average();
System.out.println("Mittelwert: " + avg.getAsDouble());

Kompiliere und führe jetzt diesen Code mit dem folgenden Befehl aus:

javac ~/project/LambdaExpressions.java && java LambdaExpressions

Die Ausgabe sollte lauten:

Mittelwert: 12.0

Erstelle ein Optional-Objekt und überprüfe, ob es leer ist oder nicht

In diesem Schritt werden wir lernen, was Optional ist und wie man ein Optional-Objekt erstellt.

Erstelle ein Optional-Objekt mit einer leeren Zeichenkette.

Optional<String> emptyString = Optional.empty();

Überprüfe, ob dieses Objekt leer ist, indem du die isPresent()-Methode verwendest.

if(emptyString.isPresent()) {
    System.out.println(emptyString.get());
}
else {
    System.out.println("Kein Wert");
}

Kompiliere und führe jetzt diesen Code mit dem folgenden Befehl aus:

javac ~/project/LambdaExpressions.java && java LambdaExpressions

Die Ausgabe sollte lauten:

Kein Wert

Zusammenfassung

In diesem Lab haben wir gelernt, wie zwei der wichtigsten Funktionen von Java 8 - Lambda-Ausdrücke und die Stream API - verwendet werden. Wir haben gelernt, wie man Lambda-Ausdrücke verwendet, um anonyme Funktionen zu erstellen, wie man die Stream API verwendet, um eine Reihe von Operationen auf einer Sammlung durchzuführen, und wie man Optional-Objekte erstellt und überprüft, ob sie leer sind oder nicht. Wir haben auch gesehen, wie man die Stream API verwendet, um eine Sammlung zu sortieren, zu filtern und den Mittelwert zu berechnen. Indem wir diese Funktionen beherrschen, können wir effizient und sauberen Code mit Java 8 schreiben.