1.Lambda表达式
Lamdba表达式是一个匿名函数,主要用来优化匿名内部类的结构
匿名内部类写法(匿名内部类用于接口中,抽象方法(void test()))重写抽象方法
lambda表达式:
(参数)->{
}
2.Lambda表达式省略写法
①如果方法体只有一句话,则可以省略方法中的花括号
②如果方法形参只有一个参数,则可以省略圆括号
③如果方法体只有一个return语句,则return也可以省略
3.使用限制
lambda表达式使用有几个条件需要特别注意
①lambda表达式是针对接口才能使用
②接口中必须有且仅有一个抽象方法,能被@functionalInterface注解修饰的方法
4.函数式接口
lambda表达式是针对接口的,有且仅有一个抽象方法,这种接口称为函数接口。lambda表达式使用时不关心接口名,抽象方法名,只关心抽象方法的参数列表和返回类型。因此JDK8提供了大量的常用的函数式接口。
这些函数接口都在java.util.function包下,常用接口有supplier接口,function接口,consumer接口,predicate接口。
4.1supplier
supplier表示供应商,供给的意思,这类接口的特点是无参有返回值
4.2consumer
consumer表示消费的意思,这类接口的特点是:有参无返回值
4.3function
function表示方法函数的意思,这类接口的特点是:有参有返回值
4.4predicate
predicate接口用来对某种类型的数据进行判断,从而得到一个boolean类型的结果
5.方法引用(::)
方法引用是一种更简洁的lambda表达式,如果一个lambda表达式的方法体只是在调用一个方法时,就可以使用方法引用来简化他
①对象引用实例方法
对象名::方法名
例:A a = new Demo01()::aaa;//aaa是一个方法
②类名引用静态方法
类名::方法名
例:A a = Demo1:bbb;
③类名引用实例方法
类名::方法名
例:A a = Demo1:ccc;
a.test(new Demo1());
④引用构造方法
类::new
例:A a = Demo1::new;
6.Stream流
对一个集合体做过滤,排序,统计等操作时,可以使用stream流来简化操作
①stream对象的获取
(1)所有collection对象都有stream方法
(2)stream.of