На Java, анонімні функції , також відомий як лямбда-вираз. Він був представлений у Java 8 як спосіб надання більш лаконічного та читабельного коду. Вони дозволяють нам визначити функцію в одному рядку коду без необхідності явного визначення класу чи інтерфейсу.
налаштування шляху python
Що таке анонімна функція?
Анонімна функція – це функція, яка не має імені та не прив’язана до ідентифікатора. Як правило, він визначається вбудовано і може бути переданий як аргумент іншій функції або повернутий функцією як значення. У Java анонімні функції реалізовані як лямбда-вирази, які є скороченим способом визначення анонімної функції.
Синтаксис
Синтаксис анонімної функції в Java такий:
(parameters) -> { body }
Параметри — це вхідні дані для функції, а тіло — це код, який виконується під час виклику функції. Ось приклад анонімної функції, яка приймає два цілі числа як вхідні дані та повертає їх суму:
(int a, int b) -> { return a + b; }
Наведену вище анонімну функцію можна передати як аргумент іншій функції або призначити змінній:
Function add = (a, b) -> a + b;
У цьому прикладі ми визначаємо змінну під назвою add, яка є функцією, яка приймає два цілі числа як вхідні дані та повертає їх суму.
Переваги анонімних функцій
Використання анонімних функцій у Java має кілька переваг, зокрема:
Короткий синтаксис: Анонімні функції забезпечують стислий спосіб визначення функції без необхідності визначення окремого класу чи інтерфейсу.
Читальний код: Оскільки анонімні функції визначені вбудовано, код легше читати та розуміти.
Гнучкість: Анонімні функції можна передавати як аргументи іншим функціям або повертати їх як значення, що забезпечує більшу гнучкість у використанні функцій.
Покращена продуктивність: Використання анонімних функцій може підвищити продуктивність за рахунок зменшення обсягу пам’яті та потужності обробки, необхідних для визначення та виклику функцій.
Ось приклад коду Java, який демонструє використання анонімних функцій (лямбда-виразів) для фільтрації списку цілих чисел:
AnonymousFunctionExample.java
import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; public class AnonymousFunctionExample { public static void main(String[] args) { List numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); numbers.add(5); // Filter the list to only include even numbers Predicate isEven = (n) -> n % 2 == 0; List evenNumbers = filter(numbers, isEven); // Print the even numbers System.out.println('Even numbers:'); for (Integer number : evenNumbers) { System.out.println(number); } } // Filter a list using a predicate public static List filter(List list, Predicate predicate) { List result = new ArrayList(); for (T element : list) { if (predicate.test(element)) { result.add(element); } } return result; } }
Вихід:
Even numbers: 2 4
У цьому коді ми визначаємо список цілих чисел, а потім використовуємо анонімну функцію (лямбда-вираз), щоб визначити предикат, який фільтрує список, щоб включати лише парні числа. Потім ми використовуємо метод фільтра, щоб застосувати предикат до списку та повернути новий список парних чисел. Нарешті, ми друкуємо парні числа за допомогою циклу for.
Ось ще один приклад коду Java, який демонструє використання анонімних функцій (лямбда-виразів) для сортування списку рядків:
AnonymousFunctionExample.java
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class AnonymousFunctionExample { public static void main(String[] args) { List fruits = new ArrayList(); fruits.add('Apple'); fruits.add('Banana'); fruits.add('Grape'); fruits.add('Orange'); fruits.add('Pineapple'); // Sort the list of fruits alphabetically fruits.sort((f1, f2) -> f1.compareTo(f2)); // Print the sorted list of fruits System.out.println('Sorted list of fruits:'); for (String fruit : fruits) { System.out.println(fruit); } } }
Вихід:
Sorted list of fruits: Apple Banana Grape Orange Pineapple
У наведеному вище коді ми визначили список фруктів, а потім використали анонімну функцію (лямбда-вираз), щоб визначити компаратор, який сортує список за алфавітом. Потім ми використовуємо метод сортування, щоб застосувати компаратор до списку та відсортувати його. Нарешті, ми друкуємо відсортований список фруктів за допомогою циклу for.
Висновок
Анонімні функції в Java забезпечують стислий і зрозумілий спосіб визначення функцій без необхідності визначення окремого класу чи інтерфейсу. Їх можна використовувати для покращення продуктивності коду та надання більшої гнучкості у використанні функцій. З появою лямбда-виразів у Java 8 анонімні функції стали важливим інструментом для розробників, щоб писати більш ефективний і підтримуваний код.