Ответ
Лямбда-выражения — это краткая форма записи анонимных функций, появившаяся в Java 8. Они реализуют функциональный интерфейс (интерфейс с одним абстрактным методом).
Основные преимущества:
- Лаконичность: Уменьшают шаблонный код.
- Читаемость: Позволяют писать код в более декларативном стиле.
- Удобство: Идеально подходят для работы с Stream API и функциональными интерфейсами.
Типичные сценарии использования:
- Функциональные интерфейсы
java.util.function:Predicate<String> isEmpty = s -> s == null || s.trim().isEmpty(); Function<Integer, Integer> square = x -> x * x; Consumer<String> printer = System.out::println; - Сортировка коллекций с
Comparator:List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); // Сравнение по длине строки names.sort((a, b) -> a.length() - b.length()); // Эквивалент с методом-ссылкой и компаратором names.sort(Comparator.comparingInt(String::length)); - Обработка потоков данных (Stream API):
List<Integer> numbers = List.of(1, 2, 3, 4, 5); List<Integer> evenSquares = numbers.stream() .filter(n -> n % 2 == 0) // Лямбда в фильтре .map(n -> n * n) // Лямбда в маппере .collect(Collectors.toList());
Важные ограничения:
- Лямбда-выражения могут захватывать только effectively final переменные из окружающего контекста (переменные, которые не изменяются после инициализации).
- Для сложной многострочной логики лучше использовать метод или анонимный класс, так как лямбда может снизить читаемость.