Ответ
Лямбда-выражения (->) используются для краткой реализации функциональных интерфейсов (интерфейсов с одним абстрактным методом). Основные области применения:
-
Stream API для обработки коллекций:
List<String> filtered = names.stream() .filter(name -> name.startsWith("A")) // Предикат .map(String::toUpperCase) // Функция .collect(Collectors.toList()); -
Работа с потоками выполнения (Concurrency):
ExecutorService executor = Executors.newFixedThreadPool(2); executor.submit(() -> System.out.println("Task running")); // Runnable CompletableFuture.supplyAsync(() -> fetchDataFromNetwork()) // Supplier .thenApply(data -> process(data)); // Function -
Сортировка и сравнение:
Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge()); // Эквивалентно с Comparator.comparing: people.sort(Comparator.comparing(Person::getAge)); -
Обработка событий (например, в Swing/JavaFX):
button.addActionListener(event -> label.setText("Clicked!"));
Преимущества:
- Краткость: Устраняет шаблонный код анонимных классов.
- Читаемость: Позволяет писать код в более декларативном стиле.
- Функциональное программирование: Открывает возможности для использования паттернов из ФП (map, filter, reduce).