Sobes.tech
Junior

Čo sú to lambda výrazy v Jave?

sobes.tech AI

Odpoveď od AI

Lambdový výraz je krátka forma pre anonymnú funkciu, ktorá implementuje metódy funkčného rozhrania.

Štruktúra: (parametre) -> { telo výrazu }.

Časť Popis Príklady
parametre Zoznam parametrov, môže byť prázdny. Typy nemusia byť uvedené (sú odhadované). ()<br>x<br>(x, y)<br>(int x, String y)
-> Operátor šípky (arrow operator). Oddelí parametre od tela. ->
telo výrazu Telo lambdy. Môže byť výraz alebo blok kódu. x * x<br>{ System.out.println(x); }

Príklady použitia:

  • Implementácia funkčných rozhraní:

    import java.util.function.Consumer;
    
    // Pred tradičnou implementáciou anonymnej triedy
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Tradičná anonymná trieda");
    
    // S použitím lambdy
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Lambdový výraz");
    
  • Práca so 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);
    
    // Filtrovanie párnych čísel s lambdou
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Výstup: [2, 4]
    
    // Premena čísel na ich štvorce
    List<Integer> squares = numbers.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(squares); // Výstup: [1, 4, 9, 16, 25]
    

Výhody:

  • Skrátenie kódu v porovnaní s anonymnými triedami.
  • Zvýšenie čitateľnosti pre jednoduché operácie.
  • Pohodlné použitie s API ako Streams a inými API orientovanými na funkcionálne programovanie.