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.