Junior
Какви са лямбда изразите в Java?
sobes.tech AI
Отговор от AI
Ламбда изразът е кратка форма за анонимна функция, която реализира методите на функционален интерфейс.
Структура: (параметри) -> { тяло на израза }.
| Част | Описание | Примери |
|---|---|---|
параметри |
Списък с параметри, може да е празен. Типовете могат да не са посочени (се извеждат). | ()<br>x<br>(x, y)<br>(int x, String y) |
-> |
Оператор стрелка (arrow operator). Разделя параметрите и тялото. | -> |
тяло на израза |
Тялото на ламбда израза. Може да бъде израз или блок код. | x * x<br>{ System.out.println(x); } |
Примери за използване:
-
Реализация на функционални интерфейси:
import java.util.function.Consumer; // Преди традиционната реализация с анонимен клас Consumer<String> consumerAnon = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumerAnon.accept("Традиционен анонимен клас"); // С използване на ламбда израз Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Ламбда израз"); -
Работа с 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); // Филтриране на четни числа с ламбда List<Integer> evenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(evenNumbers); // Изход: [2, 4] // Преобразуване на числата в техните квадрати List<Integer> squares = numbers.stream() .map(n -> n * n) .collect(Collectors.toList()); System.out.println(squares); // Изход: [1, 4, 9, 16, 25]
Предимства:
- Съкращаване на кода в сравнение с анонимните класове.
- Повишаване на четимостта за прости операции.
- Удобство при използване с API като Streams и други API, ориентирани към функционално програмиране.