Лямбда-выражения

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

Основные особенности лямбда-выражений в Java:

  1. Синтаксис: Лямбда-выражения состоят из списка параметров, символа -> (стрелка) и тела выражения. Синтаксис выглядит следующим образом: (параметры) -> {тело_выражения}.

  2. Типы параметров: В большинстве случаев типы параметров можно опустить, так как компилятор Java способен вывести их автоматически из контекста. Например, (x, y) -> x + y.

  3. Интерфейсы функционального программирования: Лямбда-выражения используются преимущественно с функциональными интерфейсами, которые содержат только один абстрактный метод. В Java 8 было введено множество предопределенных функциональных интерфейсов в пакете java.util.function, таких как Predicate, Consumer, Supplier и Function.

  4. Контексты использования: Лямбда-выражения часто используются вместе с методами высшего порядка, такими как map, filter, reduce в потоках данных (Stream API), а также в других местах, где требуется передача функциональности как аргумента метода.

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

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Создание списка чисел
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);

        // Пример использования лямбда-выражения с методом forEach
        numbers.forEach((number) -> System.out.println(number * 2));

        // Пример использования лямбда-выражения с методом removeIf
        numbers.removeIf((number) -> number % 2 == 0);

        // Вывод оставшихся чисел после удаления четных чисел
        numbers.forEach(System.out::println);
    }
}

В этом примере лямбда-выражение (number) -> System.out.println(number * 2) передается методу forEach, который выводит удвоенные значения чисел из списка. После этого используется лямбда-выражение (number) -> number % 2 == 0, переданное методу removeIf, который удаляет все четные числа из списка.

Last updated