logo

Lambda izteiksme Java valodā

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 izteiksmeLambda izteiksmes sintakse

 lambda operator ->ķermenis>

Lambda izteiksmes parametri

Tālāk ir minēti trīs Lambda izteiksmes parametri:



  1. Nulles parametrs
  2. Viens parametrs
  3. 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?

  1. () -> {}
  2. () -> geeksforgeeks
  3. () -> { return geeksforgeeks;}
  4. (Integer i) -> return geeksforgeeks + i;
  5. (String s) -> {geeksforgeeks;}

Atbilde:

4 un 5 ir nederīgas lambdas, pārējās ir derīgas. Sīkāka informācija:

  1. Šai lambda nav parametru, un tā atgriežas nederīga. Tas ir līdzīgs metodei ar tukšu pamattekstu: public void run() { }.
  2. Šai lambda nav parametru, un tā atgriež virkni kā izteiksmi.
  3. Šai lambda nav parametru, un tā atgriež virkni (izmantojot skaidru atgriešanas paziņojumu blokā).
  4. 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; }.
  5. 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; }.