logo

Funcție anonimă în Java

În Java, funcții anonime , cunoscut și sub denumirea de expresii lambda. A fost introdus în Java 8 ca o modalitate de a oferi cod mai concis și mai ușor de citit. Ele ne permit să definim o funcție într-o singură linie de cod fără a fi nevoie să definim în mod explicit o clasă sau o interfață.

java convertește caracterul în șir

Ce este o funcție anonimă?

O funcție anonimă este o funcție care nu are nume și nu este legată de un identificator. Este de obicei definit inline și poate fi transmis ca argument unei alte funcții sau returnat ca valoare dintr-o funcție. În Java, funcțiile anonime sunt implementate ca expresii lambda, care sunt o modalitate scurtă de definire a unei funcții anonime.

Sintaxă

Sintaxa pentru o funcție anonimă în Java este următoarea:

 (parameters) -> { body } 

Parametrii sunt intrările în funcție, iar corpul este codul care se execută atunci când funcția este apelată. Iată un exemplu de funcție anonimă care ia două numere întregi ca intrări și returnează suma lor:

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

Funcția anonimă de mai sus poate fi transmisă ca argument unei alte funcții sau atribuită unei variabile:

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

În acest exemplu, definim o variabilă numită add care este o funcție care ia două numere întregi ca intrări și returnează suma lor.

Avantajele funcțiilor anonime

Utilizarea funcțiilor anonime în Java are mai multe avantaje, printre care:

Sintaxă concisă: Funcțiile anonime oferă o modalitate concisă de a defini o funcție fără a fi nevoie să definiți o clasă sau o interfață separată.

Cod care se poate citi: Deoarece funcțiile anonime sunt definite în linie, codul poate fi mai ușor de citit și de înțeles.

Flexibilitate: Funcțiile anonime pot fi transmise ca argumente altor funcții sau returnate ca valori din funcții, oferind mai multă flexibilitate în modul în care sunt utilizate funcțiile.

Performanta imbunatatita: Utilizarea funcțiilor anonime poate îmbunătăți performanța prin reducerea cantității de memorie și a puterii de procesare necesare pentru definirea și apelarea funcțiilor.

iată un exemplu de cod Java care demonstrează utilizarea funcțiilor anonime (expresii lambda) pentru a filtra o listă de numere întregi:

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

Ieșire:

 Even numbers: 2 4 

În acest cod, definim o listă de numere întregi și apoi folosim o funcție anonimă (expresie lambda) pentru a defini un predicat care filtrează lista pentru a include numai numere pare. Apoi folosim metoda de filtrare pentru a aplica predicatul listei și a returna o nouă listă de numere pare. În cele din urmă, tipărim numerele pare folosind o buclă for.

Iată un alt exemplu de cod Java care demonstrează utilizarea funcțiilor anonime (expresii lambda) pentru a sorta o listă de șiruri de caractere:

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

Ieșire:

 Sorted list of fruits: Apple Banana Grape Orange Pineapple 

În codul de mai sus, am definit o listă de fructe și apoi folosim o funcție anonimă (expresie lambda) pentru a defini un comparator care sortează lista alfabetic. Apoi folosim metoda sortării pentru a aplica comparatorul listei și pentru a o sorta. În cele din urmă, imprimăm lista sortată de fructe folosind o buclă for.

Concluzie

Funcțiile anonime din Java oferă o modalitate concisă și lizibilă de definire a funcțiilor fără a fi nevoie să definiți o clasă sau o interfață separată. Ele pot fi utilizate pentru a îmbunătăți performanța codului și pentru a oferi mai multă flexibilitate în modul în care sunt utilizate funcțiile. Odată cu introducerea expresiilor lambda în Java 8, funcțiile anonime au devenit un instrument important pentru dezvoltatori pentru a scrie cod mai eficient și mai ușor de întreținut.