logo

Anonimna funkcija u Javi

U Javi, anonimne funkcije , također poznat kao lambda izrazi. Uveden je u Javi 8 kao način pružanja sažetijeg i čitljivijeg koda. Omogućuju nam da definiramo funkciju u jednoj liniji koda bez potrebe za eksplicitnim definiranjem klase ili sučelja.

počinje s javom

Što je anonimna funkcija?

Anonimna funkcija je funkcija koja nema naziv i nije vezana za identifikator. Obično se definira u liniji i može se proslijediti kao argument drugoj funkciji ili vratiti kao vrijednost iz funkcije. U Javi su anonimne funkcije implementirane kao lambda izrazi, koji su skraćeni način definiranja anonimne funkcije.

Sintaksa

Sintaksa za anonimnu funkciju u Javi je sljedeća:

 (parameters) -> { body } 

Parametri su ulazi u funkciju, a tijelo je kod koji se izvršava kada se funkcija pozove. Evo primjera anonimne funkcije koja uzima dva cijela broja kao ulaze i vraća njihov zbroj:

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

Gore navedena anonimna funkcija može se proslijediti kao argument drugoj funkciji ili dodijeliti varijabli:

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

U ovom primjeru definiramo varijablu koja se zove add koja je funkcija koja uzima dva cijela broja kao ulaze i vraća njihov zbroj.

Prednosti anonimnih funkcija

Korištenje anonimnih funkcija u Javi ima nekoliko prednosti, uključujući:

Sažeta sintaksa: Anonimne funkcije pružaju sažet način definiranja funkcije bez potrebe za definiranjem zasebne klase ili sučelja.

Čitljiv kod: Budući da su anonimne funkcije definirane inline, kod može biti lakši za čitanje i razumijevanje.

Fleksibilnost: Anonimne funkcije mogu se proslijediti kao argumenti drugim funkcijama ili vratiti kao vrijednosti iz funkcija, pružajući veću fleksibilnost u načinu na koji se funkcije koriste.

Poboljšane performanse: Korištenje anonimnih funkcija može poboljšati performanse smanjenjem količine memorije i procesorske snage potrebne za definiranje i pozivanje funkcija.

evo primjera Java koda koji pokazuje upotrebu anonimnih funkcija (lambda izraza) za filtriranje popisa cijelih brojeva:

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

Izlaz:

 Even numbers: 2 4 

U ovom kodu definiramo popis cijelih brojeva, a zatim koristimo anonimnu funkciju (lambda izraz) za definiranje predikata koji filtrira popis tako da uključuje samo parne brojeve. Zatim koristimo metodu filtra da primijenimo predikat na popis i vratimo novi popis parnih brojeva. Na kraju ispisujemo parne brojeve koristeći for petlju.

Evo još jednog primjera Java koda koji demonstrira upotrebu anonimnih funkcija (lambda izraza) za sortiranje popisa nizova:

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

Izlaz:

 Sorted list of fruits: Apple Banana Grape Orange Pineapple 

U gornjem kodu definirali smo popis voća, a zatim upotrijebili anonimnu funkciju (lambda izraz) da definiramo komparator koji sortira popis abecednim redom. Zatim koristimo metodu sortiranja da primijenimo komparator na popis i sortiramo ga. Na kraju ispisujemo sortirani popis voća koristeći for petlju.

Zaključak

Anonimne funkcije u Javi pružaju sažet i čitljiv način definiranja funkcija bez potrebe za definiranjem zasebne klase ili sučelja. Mogu se koristiti za poboljšanje izvedbe koda i za veću fleksibilnost u korištenju funkcija. S uvođenjem lambda izraza u Javi 8, anonimne funkcije postale su važan alat za programere za pisanje učinkovitijeg koda koji se može održavati.