Що таке Lambda в Java?
Лямбда-вирази у Java були представлені у версії Java 8 і дозволяють писати компактний та зрозумілий код, особливо при роботі з колекціями та функціональними інтерфейсами. Лямбда-вираз — це короткий спосіб представлення анонімних функцій, які можна передавати та використовувати як об'єкти.
Синтаксис лямбда-виразу складається з трьох частин: списку параметрів, стрілочного оператора -> та тіла виразу. Параметри записуються у круглих дужках, після стрілки вказується виконуваний код. Якщо код складається з одного рядка, фігурні дужки можна опустити.
- Покращення читабельності коду, особливо при роботі зі стрімами (Streams).
- Зменшення обсягу коду завдяки відмові від анонімних класів для реалізації функціональних інтерфейсів.
- Гнучкість у використанні методів колекцій, таких як
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("Аліса", "Боб", "Чарлі");
// Використання лямбда-виразу для виведення кожного елемента
names.forEach(name -> System.out.println(name));
// Фільтрація елементів за допомогою лямбда-виразу
names.stream()
.filter(name -> name.startsWith("А"))
.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("Привіт, " + name);
greeting.sayHello("Світ");
}
}
Цей приклад демонструє створення власного функціонального інтерфейсу та його використання з лямбда-виразом. Така структура дозволяє гнучко описувати функціональність без необхідності створення анонімних класів.