一、Lambda表达式
1、Lambda的作用
作用
Lambda表达式能在某些情况下代替匿名内部类,去简化代码。
2、Lambda的格式
三个部分
一些参数
一个箭头
一段代码
标准格式
(一些参数)->{一段代码}
3、案例演示
线程案例演示
//Lambda表达式
Thread t = new Thread(()->{
for (int i = 0; i < 100; i++) {
System.out.println(i);
}
});
t.start();
比较器案例演示
//创建集合
ArrayList<Integer> list = new ArrayList<>();
//添加元素
list.add(123);
list.add(456);
list.add(789);
list.add(111);
list.add(999);
/*
Integer o1 :代表的是要比较的元素
Integer o2 :代表的是已经排好的元素
返回值:
如果返回值是正数,表示o1>o2,会把o1放在后面
如果返回值是负数,表示o1<o2,会把o1放在前面
如果返回值是零, 表示o1==o2,o1和o2的位置不变
*/
//排序
//匿名内部类
//Collections.sort(list, new Comparator<Integer>() {
// @Override
// public int compare(Integer o1, Integer o2) {
// return o2 - o1;
// }
//});
//Lambda表达式
Collections.sort(list, (Integer o1, Integer o2)->{ return o2 - o1;});
System.out.println(list);
4、函数式接口
如果一个接口的抽象方法有且只有一个,那么这个接口就是一个函数式接口。
@FunctionalInterface用来检查当前接口是否是函数式接口。
5、Lambda的前提条件
Lambda表达式只能应用于函数式接口。
6、省略格式
1、小括号中的参数类型可以省略。
2、如果小括号中只有一个参数,小括号可以省略
3、如果大括号中只有一行代码,不管有没有返回值,可以同时省略大括号 return 和 分号。
7、小结
为了简化代码学的知识点:
匿名对象
匿名内部类
Lambda