DEV Community

Ravi Yasas
Ravi Yasas

Posted on

Lambda expressions in Java

What is a lambda expression?

  • Lambda expression is a function without any signature.
  • It doesn't have a name, return type, and modifiers.
  • It can have any number of arguments.
  • For one argument lambda expressions, parenthesis are optional.
  • Compiler can understand the data type.
  • Curly braces are mandatory for many arguments.

Advantages of Lambda expressions

  • It helps to iterate, filter, and extract data from a collection in a very efficient way.
  • It saves a lot of code.
  • Code reuse
  • Reduce class files

Functional interface

  • An interface that has only one abstract method.
  • @FunctionalInterface annotation is used to declare an interface as a functional interface.
  • Ex: Runnable interface

Lambda expression signature

  • (argument-list) -> {body}
  • Ex:
( ) -> { }        
(p1) -> { }        
(p1, p2) -> { }
Enter fullscreen mode Exit fullscreen mode

Rules

public void m1(int a, int b){    
    System.out.println(a+b);
}
    //lambda expressions
( a,b ) -> System.out.println(a+b);
Enter fullscreen mode Exit fullscreen mode
  • Lambda expression doesn't have a name, a modifier and a return type.
  • If the code contains only one line. curly braces are optional.
  • Compiler can guess the return type.
public int square(int n){
    return n*n;
}

//lambda expressions
(int n) -> {return n*n;}
(n) -> {return n*n;}
n -> n*n;
Enter fullscreen mode Exit fullscreen mode
  • If only one parameter is there, parentheses are optional.
  • Since it has only one line, curly braces are optional.
  • Without curly braces, the return type is optional.

Valid statements

Interf i = n -> n*n;
Interf i = (n) -> n*n;
Interf i = n -> {return n*n;};
Enter fullscreen mode Exit fullscreen mode

Invalid statements

Interf i = n -> return n*n;
Interf i = n -> {return n*n};
Interf i = n -> {return n*n;}
Interf i = n -> {n*n;};
Enter fullscreen mode Exit fullscreen mode

Example 01

public void m1(){
    System.out.println("Hello");
}

//lambda expressions
( ) -> System.out.println("Hello");
Enter fullscreen mode Exit fullscreen mode

Example 02

public void add(int a, int b){
    System.out.println(a+b);
}

//lambda expressions
(int a, int b) -> System.out.println(a+b);
(a, b) -> System.out.println(a+b);
Enter fullscreen mode Exit fullscreen mode

Example 03

public int square(int n){
    return n*n;
}

//lambda expressions
(int n) -> {return n*n;}
(n) -> {return n*n;}
n -> n*n;
Enter fullscreen mode Exit fullscreen mode

Top comments (0)