Что такое лямбда-выражение в Java и для чего оно используется?

«Что такое лямбда-выражение в Java и для чего оно используется?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Лямбда-выражение в Java — это краткая форма записи анонимной функции, реализующей единственный абстрактный метод функционального интерфейса. Основная цель — лаконичная замена анонимных классов и поддержка функционального стиля программирования.

Ключевые применения:

  1. Работа с коллекциями и Stream API: Упрощение операций фильтрации, преобразования и агрегации.
  2. Обработка событий: Краткая реализация слушателей (listeners).
  3. Отложенное выполнение: Передача поведения в качестве параметра метода.

Пример: Слушатель события (до и после)

// Без лямбды (анонимный класс)
button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Клик!");
    }
});

// С лямбдой
button.addActionListener(e -> System.out.println("Клик!"));

Пример: Использование в Stream API

List<String> names = Arrays.asList("Anna", "Bob", "Alice");
// Фильтрация и сортировка с помощью лямбд
List<String> result = names.stream()
                           .filter(name -> name.startsWith("A"))
                           .sorted((a, b) -> a.compareTo(b))
                           .collect(Collectors.toList());

Преимущества:

  • Лаконичность: Значительно сокращает объем шаблонного кода.
  • Читаемость: Делает намерение разработчика более явным.
  • Функциональный стиль: Позволяет писать более декларативный и выразительный код.