目录
一、Lambda简介
二、Lambda使用前提
三、Lambda语法
1.操作符
a."->"
b."::"
2.格式
a.无参数
b.有参数
四、Lambda演化过程
五、Lambda实现排序
一、Lambda简介
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。可以把Lambda表达式理解为简洁的表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表,函数主体,返回类型。
二、Lambda使用前提
接口有且仅有一个抽象方法才能使用lambad表达式。函数式接口是指,有且仅有一个抽象方法的接口。
三、Lambda语法
1.操作符
a."->"
java中,引入了一个新的操作符“->”,称为Lambda操作符;箭头操作符将Lambda分成了两个部分。
左侧:Lambda表达式的参数
右侧:Lambda表达式中所需要执行的功能,即Lambda函数体,也可以是 Lambda 的返回值文章来源:https://www.toymoban.com/news/detail-436138.html
b."::"
方法引用使用的一对冒号 :: 文章来源地址https://www.toymoban.com/news/detail-436138.html
2.格式
a.无参数
() -> {statements;}
() -> expression;
b.有参数
(parameters) -> {statements;};
(parameters) -> expression;
四、Lambda演化过程
public interface Interface {
public int add(int a);
}
public class Impl implements Interface {
@Override
public int add(int a) {
return a + 1;
}
}
public class Test {
public static void main(String[] args) {
Interface im1 = new Impl();
int a = im1.add(20);
System.out.println(a);// 外部类
class Impl2 implements Interface {
public int add(int a) {
return a + 1;
}
}
Interface im2 = new Impl2();
int a1 = im2.add(30);
System.out.println(a1);// 内部类
Interface im3 = new Interface() {
public int add(int a) {
return a;
}
};
System.out.println(im3.add(40));// 匿名内部类
Interface im4 = (b) -> {
return b + 1;
};// (b)方法
System.out.println(im4.add(100));// 常规lambda
Interface im5 = (b) -> b + 1;
System.out.println(im5.add(200));// 简化lambda
Test p1 = new Test();
Interface im6 = p1::add;
System.out.println(im6.add(1000));
}
public int add(int a) {
return a + 1;
}
}
五、Lambda实现排序
public class Dog {
private int age;
private String name;
public Dog() {
}
public Dog(int age, String name) {
this.age = age;
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public String toString() {
return "年龄:" + age + " 名字:" + name;
}
}
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Dog> list = new ArrayList<>();
list.add(new Dog(5, "dog5"));
list.add(new Dog(3, "dog3"));
list.add(new Dog(2, "dog2"));
list.add(new Dog(1, "dog1"));
list.add(new Dog(4, "dog4"));
list.sort(new Comparator<Dog>() {
public int compare(Dog o1, Dog o2) {
return o2.getAge() - o1.getAge();
}
});// 匿名内部类
for (Dog dog : list) {
System.out.println(dog);
}
System.out.println("-------------");
list.sort((o1, o2) -> o1.getAge() - o2.getAge());// lambda表达式
for (Dog dog : list) {
System.out.println(dog);
}
}
}
到了这里,关于Java- Lambda表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!