Lambda išraiška Java
Java programoje Lambda išraiškos iš esmės išreiškia funkcinių sąsajų atvejus (sąsaja su vienu abstrakčiu metodu vadinama funkcine sąsaja). Lambda išraiškos Java yra tokios pat kaip lambda funkcijos, kurios yra trumpas kodo blokas, kuris priima įvestį kaip parametrus ir grąžina gautą reikšmę. Lambda išraiškos neseniai buvo įtrauktos į Java SE 8.
Lambda raiškos funkcijos Java
Lambda išraiškos įgyvendina vienintelę abstrakčią funkciją ir todėl įgyvendina funkcines sąsajas. Lambda išraiškos yra įtrauktos į Java 8 ir teikia toliau nurodytas funkcijas.
- Įgalinti funkcionalumą traktuoti kaip metodo argumentą arba kodą kaip duomenis.
- Funkcija, kurią galima sukurti nepriklausant jokiai klasei.
- Lambda išraiška gali būti perduodama taip, tarsi tai būtų objektas, ir įvykdyta pagal poreikį.
Java Lambda išraiškos pavyzdys
Java // Java program to demonstrate lambda expressions // to implement a user defined functional interface. // A sample functional interface (An interface with // single abstract method interface FuncInterface { // An abstract function void abstractFun(int x); // A non-abstract (or default) function default void normalFun() { System.out.println('Hello'); } } class Test { public static void main(String args[]) { // lambda expression to implement above // functional interface. This interface // by default implements abstractFun() FuncInterface fobj = (int x)->System.out.println(2*x); // Tai iškviečia aukščiau esančią lambda išraišką ir išspausdina 10. fobj.abstractFun(5); } }>>
Išvestis 10
Lambda išraiškos sintaksė
- Nulinis parametras
- Vienas parametras
- Keli parametrai
1. Lambda išraiška su nuliniu parametru
2. Lambda išraiška su vienu parametru
Neprivaloma naudoti skliaustų, jei to kintamojo tipą galima nustatyti iš konteksto
Java // A Java program to demonstrate simple lambda expressions import java.util.ArrayList; class Test { public static void main(String args[]) { // Creating an ArrayList with elements // {1, 2, 3, 4} ArrayList arrL = naujas ArrayList (); arrL.add(1); arrL.add(2); arrL.add(3); arrL.add(4); // Lambda išraiškos naudojimas visiems elementams spausdinti // of arrL arrL.forEach(n -> System.out.println(n)); // Lambda išraiškos naudojimas lyginiams elementams spausdinti // arrL arrL.forEach(n -> { if (n % 2 == 0) System.out.println(n); }); } }>> Išvestis
3. Lambda išraiška su keliais parametrais
Java programa, skirta parodyti lambda išraiškos veikimą dviem argumentais.
Java // Java program to demonstrate working of lambda expressions public class Test { // operation is implemented using lambda expressions interface FuncInter1 { int operation(int a, int b); } // sayMessage() is implemented using lambda expressions // above interface FuncInter2 { void sayMessage(String message); } // Performs FuncInter1's operation on 'a' and 'b' private int operate(int a, int b, FuncInter1 fobj) { return fobj.operation(a, b); } public static void main(String args[]) { // lambda expression for addition for two parameters // data type for x and y is optional. // This expression implements 'FuncInter1' interface FuncInter1 add = (int x, int y) ->x + y; // lambda išraiškos dauginimas dviem // parametrams Ši išraiška taip pat įgyvendina // 'FuncInter1' sąsają FuncInter1 multiply = (int x, int y) -> x * y; // Testo objekto sukūrimas iškviesti veikti naudojant // skirtingus įgyvendinimus naudojant lambda // Išraiškos Test tobj = new Test(); // Pridėkite du skaičius naudodami lambda išraišką System.out.println('Papildymas yra ' + tobj.operate(6, 3, add)); // Padauginkite du skaičius naudodami lambda išraišką System.out.println('Daugyba yra ' + tobj.operate(6, 3, daugyba)); // lambda išraiška vienam parametrui // Ši išraiška įgyvendina 'FuncInter2' sąsają FuncInter2 fobj = pranešimas -> System.out.println('Sveiki ' + pranešimas); fobj.sayMessage('Geek'); } }>> Išvestis
Išvada
Kai kurie svarbūs šio straipsnio punktai yra paminėti toliau:
- Lambda išraiškos turinyje gali būti nulis, vienas arba daugiau teiginių.
- Kai yra vienas teiginys, riestiniai skliaustai nėra privalomi, o anoniminės funkcijos grąžinimo tipas yra toks pat kaip kūno išraiškos.
- Kai yra daugiau nei vienas teiginys, jie turi būti įterpti į skliaustus (kodo blokas), o anoniminės funkcijos grąžinimo tipas yra toks pat kaip ir kodo bloke grąžinamos reikšmės tipas arba negalioja, jei nieko nepateikiama. .
DUK „Lambda Expression“.
Q1. Kokio tipo lambda išraiška Java?
Atsakymas:
Java Lambda išraiškos yra trumpas kodo blokas, kuris priima įvestį kaip parametrus ir grąžina gautą reikšmę.
Q2. Ar gerai naudoti lambda išraiškas Java?
Atsakymas:
Taip, naudojant lambda išraiškas lengviau naudoti ir palaikyti kitas API.
Q3. Kokie yra Java lambda trūkumai?
Atsakymas:
Java lambda funkcijos gali būti naudojamos tik su funkcinėmis sąsajomis.
4 klausimas. Remiantis ką tik parodytomis sintaksės taisyklėmis, kuri iš toliau nurodytų dalykų yra/nėra galiojanti lambda išraiška?
- () -> {}
- () -> geeksforgeeks
- () -> { return geeksforgeeks;}
- (Sveikasis skaičius i) -> return geeksforgeeks + i;
- (Eilutė s) -> {geeksforgeeks;}
Atsakymas:
4 ir 5 yra negaliojantys lambdos, likusieji galioja. Išsami informacija:
- Ši lambda neturi parametrų ir grąžina negaliojančią. Tai panašu į metodą su tuščiu turiniu: public void run() { }.
- Ši lambda neturi parametrų ir grąžina eilutę kaip išraišką.
- Ši lambda neturi parametrų ir grąžina eilutę (naudojant aiškų grąžinimo teiginį, bloke).
- return yra kontrolės ir srauto teiginys. Norint, kad ši lambda būtų tinkama, reikalingi šie riestiniai skliaustai: (Sveikasis skaičius i) -> { return geeksforgeeks + i; }.
- geeks geeks yra išraiška, o ne teiginys. Kad ši lambda būtų tinkama, galite pašalinti garbanotas petnešas ir kabliataškį taip: (Styga s) -> geeks for geeks. Arba, jei norite, galite naudoti aiškų grąžinimo teiginį taip: (String s) -> { return geeks for geeks; }.