logo

Anonymná funkcia v Jave

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.