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

Синтаксис лямбда-выражений

Синтаксис лямбда-выражения состоит из следующих частей:

(parameters) -> expression or statement block

Параметры заключаются в круглые скобки и разделяются запятыми, если параметров несколько. Оператор стрелки -> отделяет параметры от выражения или блока операторов. Блок выражений или операторов представляет собой либо одно выражение, либо блок операторов, заключенных в фигурные скобки.

Вот пример лямбда-выражения, которое принимает два целых числа в качестве параметров и возвращает их сумму:

(int x, int y) -> x + y

Если лямбда-выражение принимает только один параметр, круглые скобки можно опустить:

x -> x * x

Если лямбда-выражение не имеет параметров, круглые скобки по-прежнему необходимы:

() -> System.out.println("Hello, world!")

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

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

Вот пример использования лямбда-выражения для сортировки списка строк в порядке возрастания:

List<String> names = Arrays.asList("John", "Jane", "Bob", "Alice");

Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
System.out.println(names);

В этом примере мы передаем лямбда-выражение в качестве второго аргумента методу Collections.sort. Лямбда-выражение принимает две строки в качестве параметров и возвращает результат вызова метода compareTo для первой строки со второй строкой в ​​качестве аргумента.

Лямбда-выражения также можно использовать с Stream API, который предоставляет новый способ работы с коллекциями в Java. Потоки позволяют выполнять такие операции, как фильтрация, сопоставление и сокращение коллекций в функциональном стиле. Вот пример использования лямбда-выражения для фильтрации списка целых чисел и вычисления их суммы:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);

int sum = numbers.stream()
                .filter(n -> n % 2 == 0)
                .mapToInt(n -> n)
                .sum();
System.out.println(sum);

В этом примере мы используем лямбда-выражение с методами filter и mapToInt, чтобы отфильтровать четные числа из списка и преобразовать их в IntStream, которые затем мы используем методом sum для вычисления суммы оставшихся чисел.

Заключение

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

Спасибо за прочтение.