Sobes.tech
Junior

Wat zijn lambda-uitdrukkingen in Java?

sobes.tech AI

Antwoord van AI

Een lambda-uitdrukking is een korte vorm voor anonieme functie, die de methoden van een functioneel interface implementeert.

Structuur: (parameters) -> { uitdrukking lichaam }.

Deel Beschrijving Voorbeelden
parameters Lijst van parameters, kan leeg zijn. Talen kunnen niet worden gespecificeerd (worden afgeleid). ()<br>x<br>(x, y)<br>(int x, String y)
-> Pijloperator (arrow operator). Scheidt parameters en lichaam. ->
uitdrukking lichaam Lambda-lichaam. Kan een uitdrukking of een codeblok zijn. x * x<br>{ System.out.println(x); }

Voorbeelden van gebruik:

  • Implementatie van functionele interfaces:

    import java.util.function.Consumer;
    
    // Voorheen, traditionele implementatie met anonieme klasse
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Traditionele anonieme klasse");
    
    // Met lambda-uitdrukking
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Lambda-uitdrukking");
    
  • Werken met 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);
    
    // Filteren van even getallen met lambda
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Uitvoer: [2, 4]
    
    // Getallen in hun kwadraten omzetten
    List<Integer> squares = numbers.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(squares); // Uitvoer: [1, 4, 9, 16, 25]
    

Voordelen:

  • Verkort de code in vergelijking met anonieme klassen.
  • Verbetert de leesbaarheid voor eenvoudige bewerkingen.
  • Gemakkelijke integratie met Streams API en andere API's die gericht zijn op functioneel programmeren.