Sobes.tech
Junior

Was sind Lambda-Ausdrücke in Java?

sobes.tech KI

Antwort von AI

Eine Lambda-Ausdruck ist eine kurze Form für anonyme Funktion, die die Methoden einer funktionalen Schnittstelle implementiert.

Struktur: (Parameter) -> { Ausdrucksbody }.

Teil Beschreibung Beispiele
Parameter Parameterliste, kann leer sein. Typen sind optional (werden abgeleitet). ()<br>x<br>(x, y)<br>(int x, String y)
-> Pfeiloperator. Trennt Parameter und Body. ->
Ausdrucksbody Lambda-Body. Kann ein Ausdruck oder ein Codeblock sein. x * x<br>{ System.out.println(x); }

Beispiele:

  • Implementierung funktionaler Schnittstellen:

    import java.util.function.Consumer;
    
    // Vorher: traditionelle anonyme Klasse
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Traditionelle anonyme Klasse");
    
    // Mit Lambda-Ausdruck
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Lambda-Ausdruck");
    
  • Arbeit mit Streams API:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    
    // Filtern gerader Zahlen mit Lambda
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Ausgabe: [2, 4]
    
    // Quadrieren der Zahlen
    List<Integer> squares = numbers.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(squares); // Ausgabe: [1, 4, 9, 16, 25]
    

Vorteile:

  • Kürzerer Code im Vergleich zu anonymen Klassen.
  • Verbesserte Lesbarkeit bei einfachen Operationen.
  • Einfachere Nutzung mit Streams API und anderen funktionalen APIs.