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.