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.