一:简介
在java8中引入了一个新的操作符,“->”,这个操作符箭头操作符或者Lambda操作符,并且箭头操作符
将Lambda表达式拆分为两部分。
a:箭头左侧为Lambda表达式的参数列表
b:箭头右侧为Lambda表达式的Lambda体,就是表达式中所需要执行的功能
二:语法对应简单例子实现
1:无参数,无返回值的例子对比:一个是java8以前的写法,一个是java8的写法
效果:
2:使用Consumer演示,有一个参数,无返回值的例子
效果:
如果只有一个参数,小括号可以不写
3:有多个参数,有返回值,并且Lambda体中存在多条语句
效果:
如果Lambda体中,只有一条语句,return和大括号都可以不写
4:Lambda表达式的参数列表的数据类型可以省略不写,因为JVM编译器可以通过上下文推断出
数据类型。
5:什么叫做函数式接口?
接口中只有一个抽象方法的接口,叫做函数式接口。
可以使用@FunctionalInterface注解检查是否是函数式接口。
⑴下面我们创建一个函数式接口的例子
效果:
6:练习
:⑴:通过Collections.sort()方法,通过定制排序比较两个Employee(先按年龄比,年龄相同按姓名比),
使用Lambda作为参数传递。
效果:
⑵:要求如下
a:申明函数式接口,接口中申明抽象方法:public String getValue(String str);
b:申明类TestLambda,类中编写方法使用接口作为参数,将一个字符串转换为大写,
并且作为方法的返回值
c:再将一个字符串的第二个和第四个的索引位置进行截取子串
①接口
②方法以及测试类
效果:
⑶:要求如下
a:申明一个带两个泛型的函数式接口,泛型类型为<T,R>,T为参数,R为返回值
b:接口中申明对应抽象方法
c:在TestLambda类中申明方法,使用接口作为参数,计算两个Long型参数的和
d:再计算两个Long型参数的乘积
效果: