logo

Java Lambda išraiškos

Lambda išraiška yra nauja ir svarbi Java funkcija, kuri buvo įtraukta į Java SE 8. Ji suteikia aiškų ir glaustą būdą, kaip pateikti vieno metodo sąsają naudojant išraišką. Tai labai naudinga kolekcijos bibliotekoje. Tai padeda kartoti, filtruoti ir išgauti duomenis iš rinkinio.

Lambda išraiška naudojama sąsajai, turinčiai funkcinę sąsają, įgyvendinti. Tai sutaupo daug kodo. Lambda išraiškos atveju mums nereikia dar kartą apibrėžti diegimo metodo. Čia mes tiesiog parašome įgyvendinimo kodą.

Java lambda išraiška traktuojama kaip funkcija, todėl kompiliatorius nesukuria .class failo.

Funkcinė sąsaja

Lambda išraiška suteikia įgyvendinimą funkcinė sąsaja . Sąsaja, turinti tik vieną abstraktų metodą, vadinama funkcine sąsaja. Java pateikia anotaciją @ Funkcinė sąsaja , kuris naudojamas sąsajai deklaruoti kaip funkcinę sąsają.


Kodėl naudoti Lambda išraišką

  1. Pateikti funkcinės sąsajos įgyvendinimą.
  2. Mažiau kodavimo.

Java Lambda išraiškos sintaksė

 (argument-list) -> {body} 

Java lambda išraiška susideda iš trijų komponentų.

Python kelio nustatymas

1) Argumentų sąrašas: Jis taip pat gali būti tuščias arba netuščias.

2) Rodyklės ženklas: Jis naudojamas susieti argumentų sąrašą ir išraiškos turinį.

3) Korpusas: Jame yra lambda išraiškos išraiškų ir teiginių.

Nėra parametrų sintaksės

 () -> { //Body of no parameter lambda } 

Vieno parametro sintaksė

kas yra css selektoriai
 (p1) -> { //Body of single parameter lambda } 

Dviejų parametrų sintaksė

 (p1,p2) -> { //Body of multiple parameter lambda } 

Pažiūrėkime scenarijų, kai neįdiegiame Java lambda išraiškos. Čia mes įdiegiame sąsają nenaudodami lambda išraiškos.

bash suskaidyta eilutė pagal skyriklį

Be lambda išraiškos

 interface Drawable{ public void draw(); } public class LambdaExpressionExample { public static void main(String[] args) { int width=10; //without lambda, Drawable implementation using anonymous class Drawable d=new Drawable(){ public void draw(){System.out.println('Drawing '+width);} }; d.draw(); } } 
Išbandykite dabar

Išvestis:

 Drawing 10 

Java Lambda išraiškos pavyzdys

Dabar mes įgyvendinsime aukščiau pateiktą pavyzdį naudodami „Java lambda“ išraišką.

 @FunctionalInterface //It is optional interface Drawable{ public void draw(); } public class LambdaExpressionExample2 { public static void main(String[] args) { int width=10; //with lambda Drawable d2=()->{ System.out.println('Drawing '+width); }; d2.draw(); } } 
Išbandykite dabar

Išvestis:

 Drawing 10 

Lambda išraiška gali turėti nulį arba bet kokį argumentų skaičių. Pažiūrėkime pavyzdžius:

Linux užduočių tvarkyklė

Java Lambda išraiškos pavyzdys: nėra parametro

 interface Sayable{ public String say(); } public class LambdaExpressionExample3{ public static void main(String[] args) { Sayable s=()->{ return 'I have nothing to say.'; }; System.out.println(s.say()); } } 
Išbandykite dabar

Išvestis:

 I have nothing to say. 

Java Lambda išraiškos pavyzdys: vienas parametras

 interface Sayable{ public String say(String name); } public class LambdaExpressionExample4{ public static void main(String[] args) { // Lambda expression with single parameter. Sayable s1=(name)->{ return 'Hello, '+name; }; System.out.println(s1.say('Sonoo')); // You can omit function parentheses Sayable s2= name ->{ return 'Hello, '+name; }; System.out.println(s2.say('Sonoo')); } } 
Išbandykite dabar

Išvestis:

 Hello, Sonoo Hello, Sonoo 

Java Lambda išraiškos pavyzdys: keli parametrai

 interface Addable{ int add(int a,int b); } public class LambdaExpressionExample5{ public static void main(String[] args) { // Multiple parameters in lambda expression Addable ad1=(a,b)->(a+b); System.out.println(ad1.add(10,20)); // Multiple parameters with data type in lambda expression Addable ad2=(int a,int b)->(a+b); System.out.println(ad2.add(100,200)); } } 
Išbandykite dabar

Išvestis:

 30 300 

Java Lambda išraiškos pavyzdys: su arba be grąžinimo raktažodžio

Jei „Java lambda“ reiškinyje yra tik vienas sakinys, galite naudoti arba nenaudoti „ return“ raktinį žodį. Jei lambda reiškinyje yra keli teiginiai, turite naudoti grąžinimo raktinį žodį.

 interface Addable{ int add(int a,int b); } public class LambdaExpressionExample6 { public static void main(String[] args) { // Lambda expression without return keyword. Addable ad1=(a,b)->(a+b); System.out.println(ad1.add(10,20)); // Lambda expression with return keyword. Addable ad2=(int a,int b)->{ return (a+b); }; System.out.println(ad2.add(100,200)); } } 
Išbandykite dabar

Išvestis:

 30 300 

Java Lambda išraiškos pavyzdys: Foreach ciklas

 import java.util.*; public class LambdaExpressionExample7{ public static void main(String[] args) { List list=new ArrayList(); list.add('ankit'); list.add('mayank'); list.add('irfan'); list.add('jai'); list.forEach( (n)->System.out.println(n) ); } } 
Išbandykite dabar

Išvestis:

 ankit mayank irfan jai 

Java Lambda išraiškos pavyzdys: keli teiginiai

 @FunctionalInterface interface Sayable{ String say(String message); } public class LambdaExpressionExample8{ public static void main(String[] args) { // You can pass multiple statements in lambda expression Sayable person = (message)-> { String str1 = 'I would like to say, '; String str2 = str1 + message; return str2; }; System.out.println(person.say('time is precious.')); } } 
Išbandykite dabar

Išvestis:

 I would like to say, time is precious. 

Java Lambda išraiškos pavyzdys: gijos kūrimas

Norėdami paleisti giją, galite naudoti lambda išraišką. Šiame pavyzdyje mes įgyvendiname paleidimo metodą naudodami lambda išraišką.

df.loc
 public class LambdaExpressionExample9{ public static void main(String[] args) { //Thread Example without lambda Runnable r1=new Runnable(){ public void run(){ System.out.println('Thread1 is running...'); } }; Thread t1=new Thread(r1); t1.start(); //Thread Example with lambda Runnable r2=()->{ System.out.println('Thread2 is running...'); }; Thread t2=new Thread(r2); t2.start(); } } 
Išbandykite dabar

Išvestis:

 Thread1 is running... Thread2 is running... 

Kolekcijos sistemoje gali būti naudojama Java lambda išraiška. Tai efektyvus ir glaustas būdas kartoti, filtruoti ir gauti duomenis. Toliau pateikiami kai kurie lambda ir kolekcijos pavyzdžiai.

„Java Lambda“ išraiškos pavyzdys: lyginamoji priemonė

 import java.util.ArrayList; import java.util.Collections; import java.util.List; class Product{ int id; String name; float price; public Product(int id, String name, float price) { super(); this.id = id; this.name = name; this.price = price; } } public class LambdaExpressionExample10{ public static void main(String[] args) { List list=new ArrayList(); //Adding Products list.add(new Product(1,'HP Laptop',25000f)); list.add(new Product(3,'Keyboard',300f)); list.add(new Product(2,'Dell Mouse',150f)); System.out.println('Sorting on the basis of name...'); // implementing lambda expression Collections.sort(list,(p1,p2)->{ return p1.name.compareTo(p2.name); }); for(Product p:list){ System.out.println(p.id+' '+p.name+' '+p.price); } } } 
Išbandykite dabar

Išvestis:

 Sorting on the basis of name... 2 Dell Mouse 150.0 1 HP Laptop 25000.0 3 Keyboard 300.0 

Java Lambda išraiškos pavyzdys: filtrų rinkimo duomenys

 import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; class Product{ int id; String name; float price; public Product(int id, String name, float price) { super(); this.id = id; this.name = name; this.price = price; } } public class LambdaExpressionExample11{ public static void main(String[] args) { List list=new ArrayList(); list.add(new Product(1,'Samsung A5',17000f)); list.add(new Product(3,'Iphone 6S',65000f)); list.add(new Product(2,'Sony Xperia',25000f)); list.add(new Product(4,'Nokia Lumia',15000f)); list.add(new Product(5,'Redmi4 ',26000f)); list.add(new Product(6,'Lenevo Vibe',19000f)); // using lambda to filter data Stream filtered_data = list.stream().filter(p -> p.price > 20000); // using lambda to iterate through collection filtered_data.forEach( product -> System.out.println(product.name+': '+product.price) ); } } 
Išbandykite dabar

Išvestis:

 Iphone 6S: 65000.0 Sony Xperia: 25000.0 Redmi4 : 26000.0 

Java Lambda išraiškos pavyzdys: įvykių klausytojas

 import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; public class LambdaEventListenerExample { public static void main(String[] args) { JTextField tf=new JTextField(); tf.setBounds(50, 50,150,20); JButton b=new JButton('click'); b.setBounds(80,100,70,30); // lambda expression implementing here. b.addActionListener(e-> {tf.setText('hello swing');}); JFrame f=new JFrame(); f.add(tf);f.add(b); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setLayout(null); f.setSize(300, 200); f.setVisible(true); } } 

Išvestis:

Java Lambda įvykių tvarkymo pavyzdys