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.