Java 中 Lambda 表达式的使用
2023-12-25 19:26:40
目录
一、Lambda 表达式的概念
???????Lambda
表达式是特殊的匿名内部类, 它是把函数作为一个方法的参数(函数作为方法参数传递),将代码像数据
一样传递。
二、Lambda 表达式的语法格式???
lambda
表达式分为三部分 :
() -> {}
??????? () 表示接口种方法的形参,
根据参数类型去匹配接口中的方法来进行方法的实现。
??????? ->? 表示
箭头操作符,分隔参数列表和方法体
????????{} 表示方法体
????????????????使用lambda表示的注意事项
????????????????????????1、形参的类型可以推断,所以可以省略
????????????????????????2、如果方法的参数只有一个,()可以省略
????????????????????????3、如果参数列表为空,必须要写上()、
????????????????????????4、如果方法体中只有一行代码,大括号、分号、可以省,
??????????????????????????? ? 如果有返回return也可以省 。但是要一起省
????????????????????????5、lambda表达式不会生成
class
文件
三、Lambda 表达式的案例使用
? 1、使用 Lambda 来实现启动线程
//不使用 Lambda 表达式的写法
new Thread(
//以下是匿名内部类的实现
new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类启动线程。。。");
}
}).start();
// 使用 Lambda 表达式进行简化
new Thread(() -> {
System.out.println("匿名内部类启动线程。。。");
}).start();
// 最简版,因为方法体中只有一行代码,可以省略掉大括号和语句后面的分号
new Thread(() -> System.out.println("匿名内部类启动线程。。。")).start();
?2、使用 Lambda 表达式实现集合的排序
List<Integer> list = new ArrayList<>();
//不使用 Lambda 表达式的写法
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// 升序排列
return o1 - o2;
}
});
// 使用 Lambda 表达式进行简化
Collections.sort(list, (Integer o1, Integer o2) -> {
return o1 - o2;
});
/*最简版,因为形参的类型可以进行推断,所以形参类型可以省略,
方法体中只有一行代码,可以省略掉大括号和语句后面的分号*/
Collections.sort(list, (o1, o2) -> o1 - o2);
3、使用 Lambda 表达式实现文件夹下的文件查找
//指定文件夹
File file = new File("D:\\bbb");
if(!file.exists()){
//如果文件夹不存在则进行创建
file.mkdir();
//给文件夹中添加新的文件,getAbsolutePath 通过绝对路径
new File(file.getAbsolutePath()+"a.Java").createNewFile();
//getPath 通过相对路径,创建文件
new File(file.getPath()+"b.Java").createNewFile();
}
//查找文件夹中的符合要求的文件
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".Java");
}
});
System.out.println(files.length);
for (File f : files) {
System.out.println(f.getName());
}
// 使用 Lambda 表达式进行简化
file.listFiles((p) -> {
return p.getName().endsWith(".Java");
});
//最简版,只有一个参数不需要 ()
file.listFiles(p -> p.getName().endsWith(".Java"));
文章来源:https://blog.csdn.net/qq_58417838/article/details/135193347
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!