Junior
Ce sunt expresiile lambda în Java?
sobes.tech AI
Răspuns de la AI
Expresia lambda este o formă concisă pentru funcția anonimă, care implementează metodele unei interfețe funcționale.
Structura: (parametri) -> { corpul expresiei }.
| Parte | Descriere | Exemple |
|---|---|---|
parametri |
Lista de parametri, poate fi goală. Tipurile pot fi neindicate (se deduc). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Operatorul săgeată (arrow operator). Separă parametrii de corp. | -> |
corp expresie |
Corpul lambda. Poate fi o expresie sau un bloc de cod. | x * x<br>{ System.out.println(x); } |
Exemple de utilizare:
-
Implementarea interfețelor funcționale:
import java.util.function.Consumer; // Înainte, implementare tradițională cu clasă anonimă Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Clasă anonimă tradițională"); // Cu expresie lambda Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Expresie lambda"); -
Lucru cu API-ul Streams:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Filtrarea numerelor pare cu lambda List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Ieșire: [2, 4] // Transformarea numerelor în pătratele lor List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Ieșire: [1, 4, 9, 16, 25]
Avantaje:
- Reducerea codului comparativ cu clasele anonime.
- Crește lizibilitatea pentru operații simple.
- Ușor de utilizat cu API-ul Streams și alte API-uri orientate pe programare funcțională.