使用Lambda表达式的并发编程方法


Java SE 8的一个重要补充是lambda表达式功能。使用表达式可以清晰简洁地表达方法接口。集合库非常有用。可以迭代集合、过滤集合并提取数据以用于有用的目的。lambda表达式被广泛用于实现函数式接口。它节省了大量的代码。Lambda表达式允许我们提供实现而无需重新定义方法。只有实现代码在这里通过编写来形成。编译器不会创建一个.class文件,因为Java lambda表达式被视为函数。

函数式接口

@FunctionalInterface是Java注解,它声明一个接口为函数式接口。函数式接口是一个只有一个抽象方法的接口。Lambda表达式允许你实现这个函数式接口。

为什么要使用Lambda表达式?

  • 它提供了函数式接口的实现。

  • 它减少了代码量。

Java Lambda表达式语法

(argument-list)
{
   //body
}

它包含三个组成部分:

  • 参数列表 - 可以为空或非空

  • 箭头 - 用于连接参数列表和表达式的正文

  • 正文 - 包含lambda表达式的表达式和语句

无参数语法

()
{
   // body of no parameter lambda
}

单参数语法

(p1)
{
   // body of single parameter lambda
}

双参数语法

(p1,p2)
{
   //body of multiple parameter lambda
}

示例:Java Lambda表达式

@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();  
   }  
}

输出

Drawing 10

示例:无Lambda表达式

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();  
   }  
}

输出

Drawing 10

示例:无参数

interface Sayable{  
   public String say();  
}  
public class LambdaExpressionExample3{  
   public static void main(String[] args) {  
      Sayable s=()->{  
         return "Don’t settle for average.";  
      };  
      System.out.println(s.say());  
   }  
}

输出

Don’t settle for average

示例:单参数

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("World"));  
          
      // You can omit function parentheses    
      Sayable s2= name ->{  
         return "Hello, "+name;  
      };  
      System.out.println(s2.say("World"));  
   }  
}

输出

Hello, World
Hello, World

示例:多参数

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(20,20));  
          
      // Multiple parameters with data type in lambda expression  
      Addable ad2=(int a,int b)->(a+b);  
      System.out.println(ad2.add(200,200));  
   }  
}

输出

40
400

结论

通过lambda表达式功能,Java SE 8提供了一个宝贵的补充。以清晰简洁的方式表达方法接口的能力变得轻而易举。迭代、过滤和提取数据是集合库提供的许多实际用途之一。实现函数式接口已经广泛使用lambda表达式,并且它减少了大量的代码。lambda表达式的另一个优点是能够提供实现而无需冗余的方法重新定义。在这里,编写使实现代码形成。编译器不会创建.class文件,因为Java lambda表达式被视为函数。

更新于:2023年8月1日

65 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告