Lambda Expression For anyone that needs Java Lambda notes

shreyansh15388 20 views 20 slides Jul 07, 2024
Slide 1
Slide 1 of 20
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20

About This Presentation

Java Lambda expression concept


Slide Content

Lambda Expression
Dr.M.S.Bhuvaneswari, SCORE,VIT

Lambda Expression
•Itisananonymous(thatis,unnamed)method
•Alambdaexpressionresultsinaformofanonymousclass.
•Thismethodisnotexecutedonitsown.Instead,itisusedtoimplementa
methoddefinedbyafunctionalinterface.
•Lambdaexpressionsarealsocommonlyreferredtoasclosures
Dr.M.S.Bhuvaneswari, SCORE,VIT

Lambda Expression Fundamentals
•Thelambdaexpressionintroducesanewsyntaxelementandoperatorintothe
Javalanguage
•lambdaoperatororthearrowoperator
•Lambdaoperatordividesthelambdaexpressionintotwoparts.
•Theleftsidespecifiesanyparametersrequiredbythelambdaexpression.
•Ontherightsideisthelambdabody,whichspecifiestheactionsofthelambda
expression
•Syntax:
(param1,param2)->body
Dr.M.S.Bhuvaneswari, SCORE,VIT

Lambda Expression Fundamentals
•lambdaexpressionconsistofthreecomponents:
▪Argument-list:Itcanbeemptyornon-emptyaswell.
▪Arrow-token:Itisusedtolinkarguments-listandbodyofexpression.
▪Body:Itcontainsexpressionsandstatementsforlambdaexpression.
Dr.M.S.Bhuvaneswari, SCORE,VIT

Lambda Expression
•NoParameterSyntax
()->{
//Bodyofnoparameterlambda
}
•OneParameterSyntax
(param1)->{
//Bodyofnoparameterlambda
}
Dr.M.S.Bhuvaneswari, SCORE,VIT

Lambda Expression
MultipleparameterSyntax
(param1,param2)->{
//Bodyofnoparameterlambda
}
Dr.M.S.Bhuvaneswari, SCORE,VIT

Functional Interface
•Afunctionalinterfaceisaninterfacethatcontainsoneandonlyoneabstractmethod.
Example:Runnableisafunctionalinterfacebecauseitdefinesonlyonemethod
run()
•Ittypicallyrepresentsasingleaction.
•Afunctionalinterfacedefinesthetargettypeofalambdaexpression.
•Whenalambdaexpressionoccursinatargettypecontext,aninstanceofaclassis
automaticallycreatedthatimplementsthefunctionalinterface,withthelambda
expressiondefiningthebehavioroftheabstractmethoddeclaredbythefunctional
interface
•AfunctionalinterfaceissometimesreferredtoasaSAMtype,whereSAMstandsfor
SingleAbstractMethod.
Dr.M.S.Bhuvaneswari, SCORE,VIT

Lambda Expression Fundamentals
•Javadefinestwotypesoflambdabodies.
▪singleexpression
▪blockofcode
Dr.M.S.Bhuvaneswari, SCORE,VIT
NormalMethod
=============
intfindSum()
{
return20;
}
LambdaExpression
================
()->20

Lambda Expression
•Inorderforalambdaexpressiontobeusedinatargettypecontext,thetypeof
theabstractmethodandthetypeofthelambdaexpressionmustbecompatible
•Rules
▪Thetypeandnumberofthelambdaexpression’sparametersmustbe
compatiblewiththemethod’sparameters;
▪Thereturntypesmustbecompatible;and
▪Anyexceptionsthrownbythelambdaexpressionmustbeacceptabletothe
method
Dr.M.S.Bhuvaneswari, SCORE,VIT

Lambda Expression Example1
Dr.M.S.Bhuvaneswari, SCORE,VIT
interfaceFuncIntf{
publicintgetValue();
}
classClsIntfimplementsFuncIntf
{
publicintgetValue()
{
return20;
}
}
classMyClass
{
publicstaticvoidmain(String[]args)
{
FuncIntfintfRef=newClsInft();
System.out.println("Valueis:"+intfRef.getValue());
}
}

Lambda Expression Example1
Dr.M.S.Bhuvaneswari, SCORE,VIT
interfaceFuncIntf{
intgetValue();
}
classMyClass
{
publicstaticvoidmain(String[]args)
{
FuncIntfintfRef=newClsInft();
System.out.println("Valueis:"+intfRef.getValue());
}
}

Lambda Expression Example1
Dr.M.S.Bhuvaneswari, SCORE,VIT
interfaceFuncIntf{
intgetValue();
}
classMyClass
{
publicstaticvoidmain(String[]args)
{
FuncIntfintfRef=;
System.out.println("Valueis:"+intfRef.getValue());
}
}

Lambda Expression Example1
Dr.M.S.Bhuvaneswari, SCORE,VIT
interfaceFuncIntf{
intgetValue();
}
classMyClass
{
publicstaticvoidmain(String[]args)
{
FuncIntfintfRef=()->20;
System.out.println("Valueis:"+intfRef.getValue());
}
}
LambdaExpression()->20
================
•ImplementsthemethodgetValue()inFuncIntf
•Returnsaninstanceoftheclass

Lambda Expression with parameters -Example2
Dr.M.S.Bhuvaneswari, SCORE,VIT
interfaceFuncIntf
{
intfindSum(inta,intb);
}
classMyClass
{
publicstaticvoidmain(String[]args)
{
FuncIntfintfRef=(x,y)->{intc=x+y;returnc;};
System.out.println("Valueis:"+intfRef.findSum(6,8));
}
}

Lambda Expression with parameters type-Example3
Dr.M.S.Bhuvaneswari, SCORE,VIT
interfaceFuncIntf
{
intfindSum(inta,intb);
}
classMyClass
{
publicstaticvoidmain(String[]args)
{
FuncIntfintfRef=(intx,inty)->{intc=x+y;returnc;};
System.out.println("Valueis:"+intfRef.findSum(6,8));
}
}

Lambda Expression with parameters type-Example4
Dr.M.S.Bhuvaneswari, SCORE,VIT
interfaceFuncIntf
{
intfindSum(inta,intb);
}
classMyClass
{
publicstaticvoidmain(String[]args)
{
FuncIntfintfRef=(intx,inty)->{intc=x+y;returnc;}; //withreturn(withmultiplestatements)
System.out.println("Valueis:"+intfRef.findSum(6,8));
FuncIntfintfRef1=(intx,inty)->(x+y); //withoutreturn(withonlyonestatement)
System.out.println("Valueis:"+intfRef1.findSum(6,8));
}
}

Thread Implementation without Lambda
classMyThreadimplementsRunnable{
publicvoidrun()
{
try{
for(inti=5;i>0;i--){
System.out.println("ChildThread:"+i);
Thread.sleep(500);
}
}
catch(InterruptedExceptione){
System.out.println("Childinterrupted.");
}
System.out.println("Exitingchildthread.");
}
}
Dr.M.S.Bhuvaneswari, SCORE,VIT

Thread Implementation without Lambda
Runnablerintf=newMyThread()
Threadth1=newThread(rintf)
th1.start()
Dr.M.S.Bhuvaneswari, SCORE,VIT

Thread Implementation using Lambda
Threadth1=newThread(()->{
try{
for(inti=5;i>0;i--){
System.out.println("ChildThread:"+i);
Thread.sleep(500);
}
}
catch(InterruptedExceptione){
System.out.println("Childinterrupted.");
}
System.out.println("Exitingchildthread.");
});
th1.start();
Dr.M.S.Bhuvaneswari, SCORE,VIT

References
•https://www.javatpoint.com/java-lambda-expressions
Tags