Java 8 实战
2021-11-12 08:50:03 0 举报
AI智能生成
Java 8 实战
作者其他创作
大纲/内容
基础知识
Why Java 8?
流处理
定义
Stream
存储和访问数据
描述对数据的计算
并行
parallelStream()
函数式编程
基石
共享可变数据
传递行为代码
方法和Lambda
方法引用
File::isHidden
传递代码
Lambda
默认方法
default声明方法
传递行为
不断变化的需求
绿苹果
指定颜色
指定重量
每个属性
行为参数化
抽象出接口
ApplePredicate
AppleGreenColorPredicate
AppleHeavyWeightPredicate
根据接口过滤
简化
匿名类
Lambda
eg.
Comparator
Runnable
Lambda
总概
Lambda表达式
可传递的匿名函数
名称
参数列表+函数主体+返回类型
异常列表
隐式返回
() -> "IronMan"
显示返回
() -> {return "IronMan";}
示例
布尔表达式
创建对象
消费对象
从对象选择/抽取
组合
比较
使用场景
函数式接口
eg.
Comparator
Runnable
Callable
@FunctionalInterface
函数描述符
throws 异常的方法
捕获异常
JDK函数式接口
谓词
Predicate
BiPredicate
原始类型
消费
Consumer
BiConsumer
原始类型
函数
Function
BiFunction
原始类型
生产
Supplier
原始类型
操作
UnaryOperator
BinaryOperator
原始类型
类型检查&推断
类型检查
filter(inventory, (Apple a) -> a.getWeight() > 150);
同样的Lambda
Comparator
ToIntBiFunction
BiFunction
void兼容
Predicate p = s -> list.add(s);
Consumer c = s -> list.add(s);
类型推断
自由变量
final
方法引用
三类
静态方法
ClassName::staticMethod
(args) -> ClassName.staticMethod(args)
任意实例方法
ClassName::instanceMethod
(expr, args) -> expr.instanceMethod(args)
某个实例方法
expr::instanceMethod
(args) -> expr.instanceMethod(args)
构造函数引用
ClassName::new
排序实战
传递代码
匿名类
Lambda
基础
类型推断
Comparator
方法引用
复合
比较器
逆序
比较器链
谓词
非
且
或
函数
andThen
g(f(x))
compose
f(g(x))
函数式数据处理
引入流
Stream API
声明性
可复合
可并行
简介
流?
元素序列
源
数据处理操作
特性
流水线
内部迭代
流PK集合
集合
所有值
外部迭代
流
按需计算
内部迭代
流操作
中间操作
终端操作
使用流
筛选&切片
filter
distinct
limit
skip
映射
map
flatMap
eg.
查找&匹配
查找
findAny
findFirst
并行
匹配
anyMatch
allMatch
noneMatch
归约
规约
初始值
BinaryOperator<T>
数值流
构建流
用流收集数据
收集器
归约&汇总
分组
分区
扩展
并行处理
并行流
分支/合并
Spliterator
高效Java 8编码
重构、测试&调试
默认方法
Optional
CompletableFuture
新日期和时间
超越Java8
函数式的思考
函数式编程的技巧
面向对象和函数式编程混合
结论&Java的未来
0 条评论
下一页