Назад к вопросам
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, ориентированными на функциональное программирование.