Junior
Τι είναι οι εκφράσεις lambda στη Java;
sobes.tech AI
Απάντηση από AI
Η έκφραση lambda είναι μια σύντομη μορφή για ανώνυμη λειτουργία, η οποία υλοποιεί τις μεθόδους μιας λειτουργικής διεπαφής.
Δομή: (παραμέτρους) -> { σώμα έκφρασης }.
| Μέρος | Περιγραφή | Παραδείγματα |
|---|---|---|
παραμέτρους |
Λίστα παραμέτρων, μπορεί να είναι κενή. Οι τύποι μπορεί να μην καθορίζονται (εκτιμώνται). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Τελεστής βέλους (arrow operator). Διαχωρίζει τις παραμέτρους από το σώμα. | -> |
σώμα έκφρασης |
Σώμα της lambda. Μπορεί να είναι μια έκφραση ή ένα μπλοκ κώδικα. | x * x<br>{ System.out.println(x); } |
Παραδείγματα χρήσης:
-
Υλοποίηση λειτουργικών διεπαφών:
import java.util.function.Consumer; // Πριν, παραδοσιακή υλοποίηση με ανώνυμη κλάση Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Παραδοσιακή ανώνυμη κλάση"); // Με χρήση έκφρασης lambda Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Έκφραση lambda"); -
Εργασία με το API Streams:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Φιλτράρισμα ζυγών αριθμών με lambda List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Έξοδος: [2, 4] // Μετατροπή αριθμών στα τετράγωνα τους List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Έξοδος: [1, 4, 9, 16, 25]
Πλεονεκτήματα:
- Μειώνει τον κώδικα σε σύγκριση με τις ανώνυμες κλάσεις.
- Βελτιώνει την αναγνωσιμότητα για απλές λειτουργίες.
- Ευκολία στη χρήση με το API Streams και άλλα API που εστιάζουν στον λειτουργικό προγραμματισμό.