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í.