Назад к вопросам
Junior
70
questionbank
Что такое лямбда-выражения в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech 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("Traditional anonymous class"); // С использованием лямбда-выражения Consumer<String> consumerLambda = s -> System.out.println(s); consumerLambda.accept("Lambda expression"); -
Работа со 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); // Фильтрация четных чисел с лямбдой 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]
Преимущества:
- Сокращение кода по сравнению с анонимными классами.
- Повышение читаемости для простых операций.
- Удобство использования с Streams API и другими API, ориентированными на функциональное программирование.