В Java, анонимни функции , известни също като ламбда изрази. Въведен е в Java 8 като начин за предоставяне на по-сбит и четим код. Те ни позволяват да дефинираме функция в един ред код, без да се налага изрично да дефинираме клас или интерфейс.
цяло число за удвояване на java
Какво е анонимна функция?
Анонимна функция е функция, която няма име и не е обвързана с идентификатор. Обикновено се дефинира вградено и може да се предава като аргумент на друга функция или да се връща като стойност от функция. В 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, анонимните функции се превърнаха във важен инструмент за разработчиците да пишат по-ефективен и поддържаем код.