使用 Lambda 表达式的并发编程方法
Java SE 8 的一个重要新增功能是 lambda 表达式功能。使用表达式可以清晰简洁地表达方法接口。集合库非常有用。可以迭代、过滤集合并提取数据以用于有用的目的。为了实现功能接口,lambda 表达式被广泛使用。它节省了大量代码。Lambda 表达式允许我们提供实现,而无需重新定义方法。只有实现代码通过编写在这里成形。编译器不会创建。因为 Java lambda 表达式被视为函数 .class 文件。
功能接口
@FunctionalInterface 是一个 Java 注释,它将接口声明为功能接口。功能接口是只有一个抽象方法的接口。 Lambda 表达式允许您实现此功能接口。
为什么使用 Lambda 表达式?
它提供功能接口的实现。
它提供更少的编码。
Java Lambda 表达式语法
(argument-list)
{
//body
}
它由三个组件组成 -
Argument-List - 可以为空或非空
Arrow-Taken - 用于链接表达式的 Argument-list 和主体
Body - 包含 lambda 的表达式和语句表达式
无参数语法
()
{
// 无参数 lambda 的主体
}
单参数语法
(p1)
{
// 单参数 lambda 的主体
}
双参数语法
(p1,p2)
{
// 多参数 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;
//不使用 lambda,使用匿名类实现 Drawable
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 表达式。
Sayable s1=(name)->{
return "Hello, "+name;
};
System.out.println(s1.say("World"));
// 您可以省略函数括号
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) {
// lambda 表达式中有多个参数
Addable ad1=(a,b)->(a+b);
System.out.println(ad1.add(20,20));
// lambda 表达式中有多个具有数据类型的参数
Addable ad2=(int a,int b)->(a+b);
System.out.println(ad2.add(200,200));
}
}
输出
40 400
结论
使用表达式,Java SE 8 通过 lambda 表达式功能提供了有价值的补充。以清晰简洁的方式表达方法接口的能力已变得毫不费力。迭代、过滤和提取数据是集合库提供的众多实际用途之一。实现函数式接口已经广泛使用 lambda 表达式,并且它大大减少了代码量。lambda 表达式的一个出色特性是能够给出实现而无需重复定义冗余方法。在这个空间中,书写赋予实现代码其形式。编译器不会创建任何内容,因为不会形成 .class 文件。因为函数被视为 Java lambda 表达式。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

