Sobes.tech
Junior

Mi a lambda kifejezések Java-ban?

sobes.tech MI

Válasz az MI-től

A lambda kifejezés egy tömör forma a névtelen függvény, amely megvalósítja egy funkcionális interfész metódusait.

Felépítés: (paraméterek) -> { kifejezés törzse }.

Rész Leírás Példák
paraméterek Paraméterek listája, lehet üres. A típusokat nem kell megadni (kitalálja a fordító). ()<br>x<br>(x, y)<br>(int x, String y)
-> Nyíl operátor (arrow operator). Elválasztja a paramétereket a törzstől. ->
kifejezés törzse Lambda törzse. Lehet egy kifejezés vagy kódrészlet blokk. x * x<br>{ System.out.println(x); }

Használati példák:

  • Funkcionális interfészek megvalósítása:

    import java.util.function.Consumer;
    
    // Korábban, hagyományos megvalósítás anonim osztállyal
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Hagyományos anonim osztály");
    
    // Lambda kifejezéssel
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Lambda kifejezés");
    
  • A Streams API-val való munka:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    
    // Páros számok szűrése lambda-val
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Kimenet: [2, 4]
    
    // Számok négyzetre emelése
    List<Integer> squares = numbers.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(squares); // Kimenet: [1, 4, 9, 16, 25]
    

Előnyök:

  • Rövidebb kód, mint az anonim osztályok esetén.
  • Könnyebben olvasható, különösen egyszerű műveleteknél.
  • Egyszerűbb használat a Streams API-val és más funkcionális programozási API-kkal.