lambda函数
lambda函数分为左右两个部分,左边为接口,右边为接口的实现比如
Runnable runable = ()-> System.out.prtal("函数的实现部分")
new Theard(runable).start();
就可以直接启动当前线程
lambda函数表达式的参数类型是可以省略不写的,因为jvm可以自己识别出来
如:
public static void main (String [] args){
// 实现lambda函数
dao dao = (x,y)->System.out.prtal(x+y);
// 调用方法
dao.show(1+2)
}
interface dao{
void show (int i,int j);
}
函数式接口:接口中只有且必须有一个必须要实现的抽象方法,可以用functioninterface注解修饰
也可以有多个接口(但是除了必须要实现的抽象方法外,其他接口已经由父类实现了)
@FunctionInterface
interface dao{
//必须要实现的抽象方法
void show (int i,int j);
// 父类已经实现
boolean equals(Object obj);
}
案例:
1. 第一个案例,方法中有参数,并且有返回值
public static void main (String [] args){
// 实现lambda函数
dao dao = (x,y)->x+y;
// 调用方法
System.out.prtal(dao.show(1+2));
}
@Functioninterface
interface dao{
int show (int i,int j);
}
2. 第二个案例,方法中有参数,并且有返回值,但是多行语句
public static void main (String [] args){
// 实现lambda函数
dao dao = (x,y)->{ //多行的时候并且有返回值 那么关键词return 必须添加
if (x==0)
return y;
else return x+y;
}
// 调用方法
System.out.prtal(dao.show(1+2));
}
interface dao{
int show (int i,int j);
}
3. 第三个案例,排序 (treeset底层为treemap 是一个二叉树)
public static void main (String [] args){
// 使用函数进行自定义排序
comparator<Integer> com = (x,y) - > x-y; //升序
comparator<Integer> com = (x,y) - > y-x; //降序
TreeSet<Integer> set = new TreeSet<>(com);
set.add(1);
set.add(10);
set.add(5);
system.out.println(set) //无序集合
}
扩展案例:
自定义类,实现过滤
public static void main (String [] args){
person per1 = new person();
per1.setId(1);
per1.setage(11);
per1.sername(zmf);
person per2 = new person();
per2.setId(2);
per2.setage(12);
per2.sername(zmf1);
List list = Array.asList(per1,per2);
//转为流 获取大于11的数据
list.stream().filter(x->x.getage()> 11).forEach(System.out.println);
}
@Data
class person{
private integer id;
private Integer age;
private String name;
}
未完待续。。。。。
java8新特性学习——>lambda表达式学习(一)
最新推荐文章于 2022-07-26 12:49:56 发布