Sobes.tech
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 που εστιάζουν στον λειτουργικό προγραμματισμό.