第1章 基础知识 1
1.1 lambda表达式 2
1.2 方法引用 5
1.3 构造函数引用 8
1.4 函数式接口 12
1.5 接口中的默认方法 14
1.6 接口中的静态方法 17
第2章 java.util.function包 20
2.1 Consumer接口 20
2.2 Supplier接口 22
2.3 Predicate接口 25
2.4 Function接口 28
第3章 流式操作 31
3.1 流的创建 31
3.2 装箱流 35
3.3 利用reduce方法实现归约操作 36
3.4 利用reduce方法校验排序 44
3.5 利用peek方法对流进行调试 45
3.6 字符串与流之间的转换 47
3.7 获取元素数量 50
3.8 汇总统计 52
3.9 查找流的第一个元素 54
3.10 使用a nyMatch、 allMatch与noneMatch方法 58
3.11 使用flatMap与map方法 60
3.12 流的拼接 63
3.13 惰性流 66
第4章 比较器与收集器 69
4.1 利用比较器实现排序 69
4.2 将流转换为集合 72
4.3 将线性集合添加到映射 75
4.4 对映射排序 77
4.5 分区与分组 79
4.6 下游收集器 81
4.7 查找最大值和最小值 83
4.8 创建不可变集合 85
4.9 实现Collector接口 87
第5章 流式操作、lambda表达式与方法引用的相关问题 91
5.1 java.util.Objects类 91
5.2 lambda表达式与效果等同于final的变量 93
5.3 随机数流 96
5.4 Map接口的默认方法 97
5.5 默认方法冲突 101
5.6 集合与映射的迭代 103
5.7 利用Supplier创建日志消息 105
5.8 闭包复合 107
5.9 利用提取的方法实现异常处理 110
5.10 受检异常与lambda表达式 112
5.11 泛型异常包装器的应用 114
第6章 Optional类 117
6.1 Optional的创建 118
6.2 从optional中检索值 120
6.3 getter和setter方法中的optional 122
6.4 Optional.flatMap与Optional.map方法 124
6.5 Optional的映射 127
第7章 文件I/O 131
7.1 文件处理 132
7.2 以流的形式检索文件 134
7.3 文件系统的遍历 135
7.4 文件系统的搜索 137
第8章 java.time包 139
8.1 Date-Time API中的基本类 140
8.2 根据现有实例创建日期和时间 143
8.3 调节器与查询 147
8.4 将java.util.Date转换为java.time.LocalDate 152
8.5 解析与格式化 155
8.6 查找具有非整数小时偏移量的时区 158
8.7 根据UTC偏移量查找地区名 160
8.8 获取事件之间的时间 162
第9章 并行与并发 165
9.1 将顺序流转换为并行流 166
9.2 并行流的优点 169
9.3 调整线程池大小 173
9.4 Future接口 175
9.5 完成CompletableFuture 178
9.6 多个CompletableFuture之间的协调(第1部分) 181
9.7 多个CompletableFuture之间的协调(第2部分) 186
第10章 Java 9新特性 193
10.1 Jigsaw中的模块 194
10.2 接口中的私有方法 198
10.3 创建不可变集合 200
10.4 新增的Stream方法 204
10.5 下游收集器:filtering与flatMapping 207
10.6 新增的optional方法 210
10.7 日期范围 212
附录A泛型与Java 8 215
作者简介 230
封面介绍 230