什么是lambda表达式
1、lambda概述
- lambda表达式称为箭头函数,匿名函数,闭包
- lambda表达式体现的是轻量级函数式编程的思想
- JDK8 新特性
2、MCAD
- Model Code As Data 进可能轻量级将代码封装为数据
- 匿名内部类,带来语法的冗余,不简洁的数据控制
3、问题&场景
- lambda不解决任何技术问题
- 对现有代码语义的一种优化方案,注意代码的可读性
- lambda的性能一般情况下不及传统语言,所以注意使用的场景
lambda基础
1、函数式接口
- 包含一个抽象函数的接口,建议使用@FunctionalInterface
- 接口新特性和函数式接口的关系
- 静态函数
- 默认函数
- Object默认函数
2、常见的函数式接口
java.util.function
Predicate<T>
Consumer<T>
Function<T,R>
Supplier<T>
UnaryOperator<T>
BinaryOperator<T>
3、lamda表达式语法
- 声明:声明InterfaceFunction
- 参数:
- 操作符:->
- 代码执块:
4、变量捕获
- 全局变量:
- 局部变量:
- 内部变量:
5、类型检查
- 类型推倒和检查
- 参数推到和检查
- 方法重载
6、lambda原理
lambda高级
1、方法的引用
- 静态方法引用 类型名称::方法名称
- 实例方法应用 对象名称::方法名称
- 构造方法应用
2、Stream使用
集合的批量操作,循环,迭代器
- 获取Stream的源
- Collection.stream()
- List.stream()
- Stream中间处理
- Stream终止操作
3、Stream的API
- filter
- map
- reduce
- foreach:会真实发生的迭代
- peek
- skip
- limit
- distinct
- sorted
- max
- min
- reduce