Lambda-выражения в Java

НАВИГАЦИЯ ПО СТРАНИЦЕ

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

Lambda-выражения в Java представляют собой удобный способ создания анонимных функций или функциональных интерфейсов. Они введены в Java 8 и позволяют упростить синтаксис при работе с функциональными интерфейсами.

Основные черты Lambda-выражений:

  1. Краткость и удобство: Позволяют определить функцию с минимальным объемом кода.

  2. Передача функции в качестве аргумента: Лямбда-выражения позволяют передавать функции в методы и другие конструкции, что делает код более гибким.

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

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

1. Пример с интерфейсом Runnable:

// Без использования Lambda-выражения
Runnable runnable1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("Привет, мир!");
    }
};
runnable1.run();

// С использованием Lambda-выражения
Runnable runnable2 = () -> System.out.println("Привет, мир!");
runnable2.run();

2. Пример с интерфейсом Comparator:

List<String> list = Arrays.asList("яблоко", "апельсин", "банан", "груша");

// Без использования Lambda-выражения
Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareTo(s2);
    }
});

// С использованием Lambda-выражения
Collections.sort(list, (s1, s2) -> s1.compareTo(s2));

3. Пример с использованием функционального интерфейса:

// Функциональный интерфейс
@FunctionalInterface
interface MathOperation {
    int operate(int a, int b);
}

public class Calculator {
    public static void main(String[] args) {
        // С использованием Lambda-выражения
        MathOperation addition = (a, b) -> a + b;
        MathOperation subtraction = (a, b) -> a - b;

        System.out.println("Сложение: " + operate(5, 3, addition));
        System.out.println("Вычитание: " + operate(5, 3, subtraction));
    }

    private static int operate(int a, int b, MathOperation operation) {
        return operation.operate(a, b);
    }
}

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