logo

Lambda Expression Javassa

Javalla Lambda-lausekkeet ilmaisevat periaatteessa toiminnallisten rajapintojen esiintymiä (yhden abstraktin menetelmän käyttöliittymää kutsutaan toiminnalliseksi rajapinnaksi). Lambda-lausekkeet Javassa ovat samat kuin lambda-funktiot, jotka ovat lyhyt koodilohko, joka hyväksyy syötteen parametreiksi ja palauttaa tuloksena olevan arvon. Lambda-lausekkeet on hiljattain sisällytetty Java SE 8:aan.

Lambda Expressionin toiminnot Javassa

Lambda-lausekkeet toteuttavat ainoan abstraktin funktion ja siten toteuttavat toiminnallisia rajapintoja. Lambdalausekkeet on lisätty Java 8:aan ja tarjoavat alla olevat toiminnot.



  • Ota käyttöön käsitelläksesi toiminnallisuutta menetelmäargumenttina tai koodia datana.
  • Funktio, joka voidaan luoda kuulumatta mihinkään luokkaan.
  • Lambda-lauseke voidaan välittää ikään kuin se olisi objekti ja suorittaa pyynnöstä.

Esimerkki Java Lambda -lausekkeesta

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);  // Tämä kutsuu edellä olevan lambda-lausekkeen ja tulostaa 10. fobj.abstractFun(5);  } }>

Lähtö
10>

lambda ilmaisuLambda-lausekkeen syntaksi

 lambda operator ->body>

Lambda-lausekeparametrit

Alla on mainittu kolme Lambda-lausekeparametria:

  1. Nolla parametri
  2. Yksi parametri
  3. Useita parametreja

1. Lambda-lauseke nollaparametrilla

() ->System.out.println('Nollaparametri lambda');>>

2. Lambda-lauseke yhdellä parametrilla

>

Sulkujen käyttö ei ole pakollista, jos muuttujan tyyppi voidaan päätellä kontekstista

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 = uusi ArrayList ();  arrL.add(1);  arrL.add(2);  arrL.add(3);  arrL.add(4);  // Lambda-lausekkeen käyttäminen kaikkien elementtien tulostamiseen // arrL:stä arrL.forEach(n -> System.out.println(n));  // Lambda-lausekkeen käyttäminen parillisten elementtien tulostamiseen // of arrL arrL.forEach(n -> { if (n % 2 == 0) System.out.println(n); });  } }>

Lähtö Huomautus: että lambda-lausekkeita voidaan käyttää vain toiminnallisten rajapintojen toteuttamiseen. Myös yllä olevassa esimerkissä lambda-lauseke toteutuu Kuluttaja Toiminnallinen käyttöliittymä.



3. Lambda-lauseke useilla parametreilla

(p1, p2) ->System.out.println('Useita parametreja: ' + p1 + ', ' + p2);>>

Java-ohjelma, joka havainnollistaa lambda-lausekkeen toimintaa kahdella argumentilla.

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-lausekkeen kertolasku kahdelle // parametrille Tämä lauseke toteuttaa myös // 'FuncInter1'-liitännän FuncInter1 multiply = (int x, int y) -> x * y;  // Testin objektin luominen kutsua varten toimii käyttäen // erilaisia ​​toteutuksia käyttäen lambdaa // Lausekkeet Testi tobj = new Test();  // Lisää kaksi numeroa lambda-lausekkeella System.out.println('Lisäys on ' + tobj.operate(6, 3, add));  // Kerro kaksi numeroa lambda-lausekkeella System.out.println('Kerto on ' + tobj.operate(6, 3, kerro));  // lambda-lauseke yksittäiselle parametrille // Tämä lauseke toteuttaa 'FuncInter2'-rajapinnan FuncInter2 fobj = viesti -> System.out.println('Hei ' + viesti);  fobj.sayMessage('Geek');  } }>

Lähtö Huomautus: Lambdalausekkeet ovat aivan kuten funktioita ja ne hyväksyvät parametrit aivan kuten funktiot.

Johtopäätös

Joitakin tärkeitä kohtia tästä artikkelista mainitaan alla:



  • Lambda-lausekkeen runko voi sisältää nollan, yhden tai useamman lauseen.
  • Kun on yksi lause, kiharat hakasulkeet eivät ole pakollisia ja anonyymin funktion palautustyyppi on sama kuin runkolausekkeen palautustyyppi.
  • Kun käskyjä on useampi kuin yksi, ne on suljettava kaareviin hakasulkeisiin (koodilohko) ja anonyymin funktion palautustyyppi on sama kuin koodilohkon sisällä palautetun arvon tyyppi, tai void, jos mitään ei palauteta .

Lambda Expressionin usein kysytyt kysymykset

Q1. Minkä tyyppinen lambda-lauseke Java?

Vastaus:

Java Lambda -lausekkeet ovat lyhyt koodilohko, joka hyväksyy syötteen parametreina ja palauttaa tuloksena olevan arvon.

Q2. Onko hyvä käyttää lambda-lausekkeita Javassa?

Vastaus:

Kyllä, lambda-lausekkeiden käyttö helpottaa muiden sovellusliittymien käyttöä ja tukemista.

Q3. Mitkä ovat Java lambdan haitat?

Vastaus:

Java lambda -funktioita voidaan käyttää vain toiminnallisten liitäntöjen kanssa.

Q4. Mikä seuraavista on/EI ole kelvollisia lambda-lausekkeita juuri esitettyjen syntaksisääntöjen perusteella?

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

Vastaus:

4 ja 5 ovat virheellisiä lambda, loput ovat kelvollisia. Yksityiskohdat:

  1. Tällä lambdalla ei ole parametreja ja se palauttaa mitättömiä. Se on samanlainen kuin menetelmä, jossa on tyhjä runko: public void run() { }.
  2. Tällä lambdalla ei ole parametreja ja se palauttaa lausekkeena merkkijonon.
  3. Tällä lambdalla ei ole parametreja ja se palauttaa merkkijonon (käyttäen eksplisiittistä return-lausetta lohkon sisällä).
  4. return on ohjausvirtalauseke. Jotta tämä lambda olisi kelvollinen, tarvitaan kiharat aaltosulkeet seuraavasti: (Kokonaisluku i) -> { return geeksforgeeks + i; }.
  5. geeks for geeks on ilmaus, ei lausunto. Jotta tämä lambda olisi kelvollinen, voit poistaa kiharat aaltosulkeet ja puolipisteen seuraavasti: (merkkijono s) -> geeks for geeks. Tai jos haluat, voit käyttää eksplisiittistä return-lausetta seuraavasti: (String s) -> { return geeks for geeks; }.