【开卷系列】Java8 实战
- 引言
- 1.1 Java 8 的新特性
- 1.2 本书的内容和结构
- Java 8 入门
- 2.1 Lambda 表达式
- 2.2 函数式编程简介
- 2.3 流
- 2.4 默认方法
- 2.5 方法引用
- 2.6 重复注解和类型注解
- 行为参数化
- 3.1 传递代码
- 3.2 匿名类
- 3.3 Lambda 表达式
- 3.4 选择最佳的行为参数化方法
- 3.5 引入流
- 流
- 4.1 筛选和切片
- 4.2 映射
- 4.3 查找和匹配
- 4.4 归约
- 4.5 数值流
- 4.6 构建流
- 4.7 并行数据处理与性能
- 使用 Stream
- 5.1 创建流
- 5.2 流的操作
- 5.3 汇聚
- 5.4 收集器
- 5.5 分组
- 5.6 分区
- 5.7 将函数作为参数传递给 collect 方法
- 5.8 实战:用流收集数据
- 用流收集数据
- 6.1 流与迭代器
- 6.2 收集器
- 6.3 实现自定义收集器
- 6.4 并行流与并行化
- 6.5 分支/合并框架
- 并行数据处理与性能
- 7.1 并行流
- 7.2 正确使用并行流
- 7.3 调试并行流
- 7.4 并行化的陷阱
- 重构、测试和调试
- 8.1 重构
- 8.2 测试 Lambda 表达式
- 8.3 调试 Lambda 表达式
- 默认方法
- 9.1 默认方法简介
- 9.2 默认方法的多重继承
- 9.3 冲突与默认方法
- 9.4 为什么要有默认方法
- 用 Optional 取代 null
- 10.1 为什么要引入 Optional
- 10.2 使用 Optional 的几个好处
- 10.3 Optional 的高级应用
- CompletableFuture:组合式异步编程
- 11.1 异步 API
- 11.2 CompletableFuture 简介
- 11.3 异步执行
- 11.4 使用 CompletableFuture 构建异步应用程序
- 新的日期和时间 API
- 12.1 LocalDate、LocalTime、Instant、Duration 以及 Period
- 12.2 处理时区
- 12.3 执行计算
- 函数式的思考方式
- 13.1 从命令式编程到函数式编程
- 13.2 函数式编程的概念
- 13.3 将函数式编程思想应用到 Java 中
- 函数式编程的技巧
- 14.1 将函数作为一等值并传递
- 14.2 使用闭包
- 14.3 使用高阶函数
- 14.4 像使用集合一样使用函数
- Java 8 中的设计模式
- 15.1 Lambda 表达式和设计模式
- 15.2 策略模式
- 15.3 装饰者模式
- 15.4 工厂模式
- 15.5 观察者模式
- 新的 Java 8 API
- 16.1 Base64
- 16.2 并行数组
- 16.3 并行化操作
- 16.4 重复注解和类型注解
- 16.5 Nashorn JavaScript 引擎
- 16.6 其他新特性
- 总结
- 17.1 Java 8 的主要特性
- 17.2 Java 8 的局限性
- 17.3 Java 8 的未来