Sobes.tech
Junior

Co jsou to lambda výrazy v Java?

sobes.tech AI

Odpověď od AI

Lambda výraz je stručná forma nepojmenované funkce, která implementuje metody funkčního rozhraní.

Struktura: (parametry) -> { tělo výrazu }.

Část Popis Příklady
parametry Seznam parametrů, může být prázdný. Typy nemusí být uvedeny (jsou odvozeny). ()<br>x<br>(x, y)<br>(int x, String y)
-> Šipkový operátor (arrow operator). Odděluje parametry od těla. ->
tělo výrazu Tělo lambda. Může být výraz nebo blok kódu. x * x<br>{ System.out.println(x); }

Příklady použití:

  • Implementace funkčních rozhraní:

    import java.util.function.Consumer;
    
    // Dříve, tradiční implementace s anonymní třídou
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Tradiční anonymní třída");
    
    // S použitím lambda výrazu
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Lambda výraz");
    
  • Práce s 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);
    
    // Filtrace sudých čísel s lambda
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Výstup: [2, 4]
    
    // Převod čísel na jejich druhé mocniny
    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:

  • Zkrácení kódu ve srovnání s anonymními třídami.
  • Zvýšení čitelnosti u jednoduchých operací.
  • Snadné použití s API Streams a dalšími API orientovanými na funkcionální programování.