Что такое лямбда-выражение (lambda) в Java?

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

Ответ

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

Основные особенности:

  • Не имеет имени.
  • Типы параметров часто могут быть выведены компилятором из контекста.
  • Позволяет писать более чистый и функциональный код.

Синтаксис: (parameters) -> expression или (parameters) -> { statements; }

Примеры:

// 1. Реализация Runnable
Runnable oldRunnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello");
    }
};

Runnable lambdaRunnable = () -> System.out.println("Hello");

// 2. Использование с функциональным интерфейсом Comparator
List<String> list = Arrays.asList("a", "c", "b");
Collections.sort(list, (s1, s2) -> s1.compareTo(s2));

// 3. Использование с Stream API
list.stream()
    .filter(s -> s.startsWith("a"))
    .forEach(System.out::println);

Почему это важно: Лямбды — основа для Stream API и позволяют писать декларативный, легко читаемый код для обработки коллекций.