Java Lambda表达式的使用及案例
日期: 2020-05-02 分类: 跨站数据 344次阅读
1. Lambda表达式的标准格式:
(1)一些参数
(2)一个箭头
(3)一段代码
格式:
(参数列表)->{一些重写的代码};
解释说明
( ):接口中抽象方法的参数列表,没有参数就空着,有参数就写出参数,多个参数使用逗号分隔
->:传递的意思,将参数列表传递给方法体
{ }:重写接口的抽象方法体
2. Lambda表达式的省略格式
凡是可以根据上下文进行推导的都可以省略
可以省略的内容:
(1)(参数列表):括号中参数列表的数据类型,可以省略不写
(2)(参数列表):括号中的参数如果只有一个,那么参数类型和()都可以省略
(3){一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略({},return,分号),但是三者必须同时省略
3. Lambda表达式的使用前提
(1)使用Lambda表达式必须有接口,而且接口中有且仅有一个抽象方法;
无论是JDK中内置的Runnable、Comparator接口还是自定义接口,只有当接口中的抽象方法存在且唯一时,才可以使用Lambda表达式。
(2)使用Lambda表达式必须具有上下文推断
方法的参数或局部变量类型必须为Lambda表达式对应的接口类型,才能使用Lambda表达式作为该接口的实例。
案例:
//使用匿名内部类实现线程
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("创建一个新线程");
}
}).start();
}
//使用Lambda表达式的方式实现线程
public static void main(String[] args) {
new Thread(()->{System.out.println("创建一个新线程");}).start();
}
public static void main(String[] args) {
person[] arr={
new person("aa",30),
new person("bb",10),
new person("cc",20)
};
//使用匿名方式实现
/*Arrays.sort(arr,new Comparator<person>(){
@Override
public int compare(person o1, person o2) {
return o1.getAge()-o2.getAge();
}
});*/
//使用Lambda表达式实现
Arrays.sort(arr,(person o1, person o2)-> {
return o1.getAge()-o2.getAge();
});
for (person person : arr) {
System.out.println(person);
}
}
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐