使用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表达式被视为函数。
广告