函数式接口
如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口
内置四大核心函数式接口
-
Consumer<T>
-
Supplier<T>
-
Function<T, R>
-
Prediate<T>
Lambda 表达式
Lambda表达式的本质:作为函数式接口的实例
语法格式
- 无参,无返回值
- 需要一个参数,但是,没有返回值
- 数据类型可以省略,因为可有编译器推断得出
- 只有一个参数时,参数的小括号可以省略
- 当Lambda只有一条语句时,return与大括号若有都可以省略
方法引用与构造器引用
使用情境:当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!
方法引用可以看作是Lambda表达式深层次的表达,是函数式接口的一个实例,通过方法的名字来指向一个方法。
使用要求:接口中抽象方法的形参列表和返回值类型与方法引用的 相同(针对 对象 :: 非静态方法,类 :: 静态方法两种情况)
Stream API
Stream操作的三个步骤
- 创建 Stream (四种创建方式:通过集合、通过数组、通过Stream的of()、创建无限流)
- 中间操作
筛选与切片 filter()、limit()、skip()、distinct()
映射 map(function f)、flatMap(function f)
排序 sorted()、sorted(Comparator com) - 终止操作
匹配与查找 allMatch(Prediate p)
归约 reduce()
收集 collect(Collector c)