v Jave anonymné funkcie , známe aj ako výrazy lambda. Predstavil sa v Java 8 ako spôsob, ako poskytnúť stručnejší a čitateľnejší kód. Umožňujú nám definovať funkciu v jednom riadku kódu bez toho, aby sme museli explicitne definovať triedu alebo rozhranie.
komponenty robota
Čo je anonymná funkcia?
Anonymná funkcia je funkcia, ktorá nemá názov a nie je viazaná na identifikátor. Zvyčajne je definovaný inline a môže byť odovzdaný ako argument inej funkcii alebo vrátený ako hodnota z funkcie. V Jave sú anonymné funkcie implementované ako lambda výrazy, čo je skrátený spôsob definovania anonymnej funkcie.
Syntax
Syntax anonymnej funkcie v jazyku Java je nasledovná:
(parameters) -> { body }
Parametre sú vstupy do funkcie a telo je kód, ktorý sa vykoná pri volaní funkcie. Tu je príklad anonymnej funkcie, ktorá berie dve celé čísla ako vstupy a vracia ich súčet:
(int a, int b) -> { return a + b; }
Vyššie uvedená anonymná funkcia môže byť odovzdaná ako argument inej funkcii alebo priradená k premennej:
Function add = (a, b) -> a + b;
V tomto príklade definujeme premennú s názvom add, čo je funkcia, ktorá berie dve celé čísla ako vstupy a vracia ich súčet.
Výhody anonymných funkcií
Používanie anonymných funkcií v jazyku Java má niekoľko výhod, medzi ktoré patria:
Stručná syntax: Anonymné funkcie poskytujú stručný spôsob definovania funkcie bez nutnosti definovať samostatnú triedu alebo rozhranie.
Čitateľný kód: Pretože anonymné funkcie sú definované inline, kód môže byť ľahšie čitateľný a zrozumiteľný.
Flexibilita: Anonymné funkcie môžu byť odovzdané ako argumenty iným funkciám alebo vrátené ako hodnoty z funkcií, čo poskytuje väčšiu flexibilitu pri používaní funkcií.
Vylepšený výkon: Použitie anonymných funkcií môže zlepšiť výkon znížením množstva pamäte a výpočtového výkonu potrebného na definovanie a volanie funkcií.
tu je príklad kódu Java, ktorý demonštruje použitie anonymných funkcií (výrazov lambda) na filtrovanie zoznamu 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ýkon:
Even numbers: 2 4
V tomto kóde definujeme zoznam celých čísel a potom pomocou anonymnej funkcie (výraz lambda) definujeme predikát, ktorý filtruje zoznam tak, aby obsahoval iba párne čísla. Potom použijeme metódu filtrovania na aplikovanie predikátu na zoznam a vrátenie nového zoznamu párnych čísel. Nakoniec párne čísla vytlačíme pomocou cyklu for.
Tu je ďalší príklad kódu Java, ktorý demonštruje použitie anonymných funkcií (výrazov lambda) na triedenie zoznamu reťazcov:
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ýkon:
Sorted list of fruits: Apple Banana Grape Orange Pineapple
Vo vyššie uvedenom kóde sme definovali zoznam ovocia a potom sme pomocou anonymnej funkcie (výraz lambda) definovali porovnávač, ktorý zoznam triedi podľa abecedy. Potom použijeme metódu triedenia na aplikovanie komparátora na zoznam a jeho triedenie. Nakoniec vytlačíme triedený zoznam ovocia pomocou slučky for.
Záver
Anonymné funkcie v jazyku Java poskytujú stručný a čitateľný spôsob definovania funkcií bez toho, aby ste museli definovať samostatnú triedu alebo rozhranie. Možno ich použiť na zlepšenie výkonu kódu a poskytnúť väčšiu flexibilitu pri používaní funkcií. So zavedením výrazov lambda v jazyku Java 8 sa anonymné funkcie stali dôležitým nástrojom pre vývojárov na písanie efektívnejšieho a udržiavateľného kódu.