Java valodā Lambda izteiksmes pamatā izsaka funkcionālo saskarņu gadījumus (interfeisu ar vienu abstraktu metodi sauc par funkcionālo saskarni). Lambda izteiksmes Java ir tādas pašas kā lambda funkcijas, kas ir īss koda bloks, kas pieņem ievadi kā parametrus un atgriež iegūto vērtību. Lambda izteiksmes nesen ir iekļautas Java SE 8.
Lambda izteiksmes funkcijas Java
Lambda izteiksmes īsteno vienīgo abstrakto funkciju un tāpēc ievieš funkcionālās saskarnes. Lambda izteiksmes tiek pievienotas Java 8 un nodrošina tālāk norādītās funkcijas.
- Iespējot funkcionalitāti uzskatīt par metodes argumentu vai kodu kā datus.
- Funkcija, kuru var izveidot, nepiederot nevienai klasei.
- Lambda izteiksmi var nodot tā, it kā tas būtu objekts, un izpildīt pēc pieprasījuma.
Java Lambda izteiksmes piemērs
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); // Tas izsauc iepriekš minēto lambda izteiksmi un izdrukā 10. fobj.abstractFun(5); } }> Izvade
10>
Lambda izteiksmes sintakse
lambda operator ->ķermenis>
Lambda izteiksmes parametri
Tālāk ir minēti trīs Lambda izteiksmes parametri:
- Nulles parametrs
- Viens parametrs
- Vairāki parametri
1. Lambda izteiksme ar nulles parametru
() ->System.out.println('Nulles parametrs lambda');>> 2. Lambda izteiksme ar vienu parametru
> Iekavas nav obligāti jāizmanto, ja šī mainīgā veidu var izsecināt no konteksta
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 = jauns ArrayList (); arrL.add(1); arrL.add(2); arrL.add(3); arrL.add(4); // Lambda izteiksmes izmantošana visu elementu drukāšanai // no arrL arrL.forEach(n -> System.out.println(n)); // Lambda izteiksmes izmantošana pāra elementu drukāšanai // no arrL arrL.forEach(n -> { if (n % 2 == 0) System.out.println(n); }); } }>
Izvade Piezīme: ka lambda izteiksmes var izmantot tikai funkcionālu saskarņu ieviešanai. Iepriekš minētajā piemērā tiek ieviesta arī lambda izteiksme Patērētājs Funkcionālais interfeiss. 3. Lambda izteiksme ar vairākiem parametriem
(p1, p2) ->System.out.println('Vairāki parametri: ' + p1 + ', ' + p2);>> Java programma, lai demonstrētu lambda izteiksmes darbību ar diviem argumentiem.
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 izteiksmes reizināšana diviem // parametriem Šī izteiksme realizē arī // 'FuncInter1' interfeisu FuncInter1 reizināt = (int x, int y) -> x * y; // Testa objekta izveide, lai izsauktu darbību, izmantojot // dažādas implementācijas, izmantojot lambda // Izteiksmes Test tobj = new Test(); // Pievienojiet divus skaitļus, izmantojot lambda izteiksmi System.out.println('Papildinājums ir ' + tobj.operate(6, 3, add)); // Reiziniet divus skaitļus, izmantojot lambda izteiksmi System.out.println('Reizināšana ir ' + tobj.operate(6, 3, reizināt)); // lambda izteiksme vienam parametram // Šī izteiksme realizē 'FuncInter2' interfeisu FuncInter2 fobj = ziņojums -> System.out.println('Sveiki ' + ziņojums); fobj.sayMessage('Geek'); } }>
Izvade Piezīme: Lambda izteiksmes ir tāpat kā funkcijas, un tās pieņem parametrus tāpat kā funkcijas. Secinājums
Tālāk ir minēti daži svarīgi punkti no šī raksta:
- Lambda izteiksmes pamattekstā var būt nulle, viens vai vairāki priekšraksti.
- Ja ir viens priekšraksts, krokainās iekavas nav obligātas un anonīmās funkcijas atgriešanas veids ir tāds pats kā pamatteksta izteiksmei.
- Ja ir vairāk nekā viens priekšraksts, tie jāiekļauj cirtainās iekavās (koda blokā), un anonīmās funkcijas atgriešanas veids ir tāds pats kā koda blokā atgrieztās vērtības veids vai spēkā neesošs, ja nekas netiek atgriezts. .
Bieži uzdotie jautājumi programmā Lambda Expression
Q1. Kāda veida lambda izteiksme Java?
Atbilde:
Java Lambda izteiksmes ir īss koda bloks, kas pieņem ievadi kā parametrus un atgriež iegūto vērtību.
Q2. Vai Java ir labi izmantot lambda izteiksmes?
Atbilde:
Jā, izmantojot lambda izteiksmes, ir vieglāk izmantot un atbalstīt citas API.
Q3. Kādi ir Java lambda trūkumi?
Atbilde:
Java lambda funkcijas var izmantot tikai ar funkcionālām saskarnēm.
Q4. Pamatojoties uz tikko parādītajiem sintakses noteikumiem, kura no tālāk norādītajām ir/NAV derīgas lambda izteiksmes?
- () -> {}
- () -> geeksforgeeks
- () -> { return geeksforgeeks;}
- (Integer i) -> return geeksforgeeks + i;
- (String s) -> {geeksforgeeks;}
Atbilde:
4 un 5 ir nederīgas lambdas, pārējās ir derīgas. Sīkāka informācija:
- Šai lambda nav parametru, un tā atgriežas nederīga. Tas ir līdzīgs metodei ar tukšu pamattekstu: public void run() { }.
- Šai lambda nav parametru, un tā atgriež virkni kā izteiksmi.
- Šai lambda nav parametru, un tā atgriež virkni (izmantojot skaidru atgriešanas paziņojumu blokā).
- atgriešanās ir kontroles plūsmas paziņojums. Lai šī lambda būtu derīga, ir nepieciešami cirtaini iekavas: (Integer i) -> { return geeksforgeeks + i; }.
- geeks par geeks ir izteiciens, nevis apgalvojums. Lai šī lambda būtu derīga, varat noņemt cirtainās breketes un semikolu šādi: (String s) -> geeks for Geeks. Vai arī, ja vēlaties, varat izmantot skaidru atgriešanas paziņojumu šādi: (String s) -> { return geeks for geeks; }.
