Использовал ли вы лямбда-выражения в Java?

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

Ответ

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

Ключевые преимущества:

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

Примеры использования:

  1. С Stream API и forEach:

    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
    names.forEach(name -> System.out.println(name));
  2. С функциональным интерфейсом Predicate:

    List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
    numbers.removeIf(n -> n % 2 == 0); // Удаляет все чётные числа
    System.out.println(numbers); // [1, 3, 5]
  3. Сортировка с Comparator:

    List<String> words = Arrays.asList("beta", "alpha", "gamma");
    words.sort((a, b) -> a.compareTo(b));
  4. Создание потока Runnable:

    new Thread(() -> System.out.println("Запуск в новом потоке")).start();

Лямбда-выражения работают с любым функциональным интерфейсом (интерфейсом с одним абстрактным методом, например, Runnable, Comparator, Callable).