Lambda表达式
面向对象思想:找一个事情的对象,调用其方法来完成事项
函数式编程思想:只关心结果,不关注对象是什么
new Thread(()->{
xxx;
}
).start();
格式:
- 一些参数:使用“,”分隔,写在括号内
- 一个箭头
- 一段大括号
举例:排序数组person对象,以arrays.sort方法按照person年龄排序
main(){
Person parray[] ={
new Person("hello",22),
new Person("nihao",34),
new Person("world",11)
}
Arrays.sort(parray,new comparator{
@override
public int compare(Person o1,Person o2){
return o1.getAge()-o2.getAge();
}
});
for(Person person : parray){
System.out.plantln(person);
}
/**
Person{name='world', age=11}
Person{name='hello', age=22}
Person{name='nihao', age=34}
*/
//使用lambda表达式后
Arrays.sort(parray,(Person o1,Person o2)->{
return o2.getAge()-o1.getAge();
});
for(Person person : parray){
System.out.plantln(person);
}
/**
Person{name='nihao', age=34}
Person{name='hello', age=22}
Person{name='world', age=11}
*/
}
Lambda省略格式
可推导,可省略:
- 参数列表数据类型可省略
- 参数只有一个时,可以省略
- {}中,只有一行代码,可以省略大括号,return和分号,且要省全省
注意事项:
- 使用lambda需要有接口,且接口中只有一个抽象方法
- 方法参数或局部变量必须为lambda对应接口类型
有且仅有一个抽象方法的接口为函数式接口