浅薄理解
在之前的面试中被问过一个数组过滤问题,用代码一行写出来。第一时间想到了Lambda表达式,但我不会(Java8 出来多久了,Lambda表达式还不会。。。 Lambda表达来自于函数式编程思想,函数就是给我一些输入量我通过一些操作给你想要的输出量。在我们使用lambda表达式以后,可以用一段函数来替代一个对象所需要做的事。有些对象我们可能只需要使用一次,我们使用lambda表达式就可以省略很多不必要的代码。
简单使用
Java8 之前可以这样创建一个线程:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("这是一个线程");
}
}).start();
有了Lambda之后我们可以这样创建一个线程:
new Thread(()->{
System.out.println("这也是一个线程");
}).start();
比较器案例:
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
Collections.sort(list,(o1, o2) -> o2-o1);
lambda的写法()->{},()里面写形参 {}里面写方法的具体内容。
- ()小括号中的参数类型可以省略;
- 小括号中有且只有一个参数的时候小括号可以省略;
- 如果大括号中有且只有一个语句,那么return、{}、分号可以省略;
lambda的使用条件:
首先,都是接口;
其次,接口中有且只有一个接口,才可以使用lambda表达式
适用于去简写,需要使用接口中只有一个抽象方法的实例。如Runnable、和比较器的简写。
tip: 每天一个小知识点,一点一点慢慢进步