Справочники Java Lambda

Что такое Lambda в Java?

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


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


Основные преимущества использования лямбда-выражений
  1. Улучшение читаемости кода, особенно в случаях работы с потоками (Streams).
  2. Уменьшение объема кода за счет отказа от анонимных классов для реализации функциональных интерфейсов.
  3. Гибкость в использовании методов коллекций, таких как filter, map и reduce.


import java.util.Arrays;
import java.util.List;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        // Использование лямбда-выражения для вывода каждого элемента
        names.forEach(name -> System.out.println(name));

        // Фильтрация элементов с использованием лямбда-выражения
        names.stream()
             .filter(name -> name.startsWith("A"))
             .forEach(System.out::println);
    }
}


В примере выше лямбда-выражения используются для обработки списка строк. Метод forEach принимает лямбда-выражение, которое выводит каждый элемент списка. Также показан пример фильтрации элементов с помощью метода filter, где лямбда-выражение определяет условие фильтрации.


Важно отметить, что лямбда-выражения можно использовать только с функциональными интерфейсами. Функциональный интерфейс — это интерфейс с одним абстрактным методом, например Runnable, Comparator или пользовательский интерфейс, помеченный аннотацией @FunctionalInterface.


@FunctionalInterface
interface Greeting {
    void sayHello(String name);
}

public class CustomLambda {
    public static void main(String[] args) {
        // Реализация через лямбда-выражение
        Greeting greeting = name -> System.out.println("Hello, " + name);
        greeting.sayHello("World");
    }
}


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

Комментарии
Добавить комментарий

Пока комментариев нет