logo

Anonymní funkce v Javě

v Javě, anonymní funkce , také známé jako výrazy lambda. Zavedeno v Javě 8 jako způsob, jak poskytnout stručnější a čitelnější kód. Umožňují nám definovat funkci v jediném řádku kódu, aniž bychom museli explicitně definovat třídu nebo rozhraní.

součásti robota

Co je anonymní funkce?

Anonymní funkce je funkce, která nemá jméno a není vázána na identifikátor. Obvykle je definován inline a může být předán jako argument jiné funkci nebo vrácen jako hodnota z funkce. V Javě jsou anonymní funkce implementovány jako lambda výrazy, což je zkrácený způsob definování anonymní funkce.

Syntax

Syntaxe anonymní funkce v Javě je následující:

 (parameters) -> { body } 

Parametry jsou vstupy do funkce a tělo je kód, který se provede při volání funkce. Zde je příklad anonymní funkce, která bere jako vstupy dvě celá čísla a vrací jejich součet:

 (int a, int b) -> { return a + b; } 

Výše uvedená anonymní funkce může být předána jako argument jiné funkci nebo přiřazena proměnné:

 Function add = (a, b) -> a + b; 

V tomto příkladu definujeme proměnnou nazvanou add, což je funkce, která přijímá dvě celá čísla jako vstupy a vrací jejich součet.

Výhody anonymních funkcí

Použití anonymních funkcí v Javě má ​​několik výhod, včetně:

Stručná syntaxe: Anonymní funkce poskytují stručný způsob definování funkce bez nutnosti definovat samostatnou třídu nebo rozhraní.

Čitelný kód: Protože anonymní funkce jsou definovány inline, kód může být snáze čitelný a srozumitelný.

Flexibilita: Anonymní funkce mohou být předány jako argumenty jiným funkcím nebo vráceny jako hodnoty z funkcí, což poskytuje větší flexibilitu ve způsobu použití funkcí.

Zlepšený výkon: Použití anonymních funkcí může zlepšit výkon snížením množství paměti a výpočetního výkonu potřebného k definování a volání funkcí.

zde je příklad kódu Java, který demonstruje použití anonymních funkcí (výrazů lambda) k filtrování seznamu celých čísel:

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; } } 

Výstup:

 Even numbers: 2 4 

V tomto kódu definujeme seznam celých čísel a pak pomocí anonymní funkce (výraz lambda) definujeme predikát, který filtruje seznam tak, aby obsahoval pouze sudá čísla. Potom použijeme metodu filtru k aplikaci predikátu na seznam a vrátíme nový seznam sudých čísel. Nakonec vytiskneme sudá čísla pomocí cyklu for.

Zde je další příklad kódu Java, který demonstruje použití anonymních funkcí (výrazů lambda) k řazení seznamu řetězců:

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); } } } 

Výstup:

 Sorted list of fruits: Apple Banana Grape Orange Pineapple 

Ve výše uvedeném kódu jsme definovali seznam ovoce a pak pomocí anonymní funkce (výraz lambda) definovali komparátor, který seznam seřadí podle abecedy. Poté použijeme metodu třídění k aplikování komparátoru na seznam a jeho řazení. Nakonec vytiskneme seřazený seznam ovoce pomocí smyčky for.

Závěr

Anonymní funkce v Javě poskytují stručný a čitelný způsob definování funkcí bez nutnosti definovat samostatnou třídu nebo rozhraní. Lze je použít ke zlepšení výkonu kódu a poskytnout větší flexibilitu ve způsobu použití funkcí. Se zavedením lambda výrazů v Javě 8 se anonymní funkce staly důležitým nástrojem pro vývojáře k psaní efektivnějšího a udržitelnějšího kódu.