第一部分 基础知识
第二部分 函数式数据处理
第三部分 高效Java 8编程
第四部分 超越Java 8
15.面向对象和函数式编程的混合:Java 8和Scala的比较
第一部分 基础知识
1
2
3
第二部分 函数式数据处理
4
5
6
6.2.4.1.Stream接口的collect和reduce有何不同
6.2.4.2.收集框架的灵活性:以不同的方法执行同样的操作
6.3.2.2.与groupingBy联合使用的其他收集器的例子
6.5.1.2.将元素添加到结果容器:accumulator方法
6.5.1.3.对结果容器应用最终转换:finisher方法
6.6.1.4.第四步:finisher方法和收集器的characteristics方法
7
7.2.1.1.运行ForkJoinSumCalculator
第三部分 高效Java 8编程
8
9
9.3.2.4.继承不应该成为你一谈到代码复用就试图倚靠的万金油
10
10.1.1.采用防御式检查减少NullPointerException
10.3.2.使用map从Optional对象中提取和转换值
10.3.3.1.使用Optional获取car的保险公司名称
10.3.3.2.使用Optional解引用串接的Person/Car/Insurance对象
10.3.3.3.在域模型中使用Optional,以及为什么它们无法序列化
10.4.3.基础类型的Optional对象,以及为什么应该避免使用它们
11
11.1.2.使用CompletableFuture构建异步应用
11.2.2.1.使用工厂方法supplyAsync创建CompletableFuture
11.3.让你的代码免受阻塞之苦——将无法改变的同步适配成异步
11.3.2.使用CompletableFuture发起异步请求
11.3.4.2.并行——使用Stream还是CompletableFutures?
11.4.4.将两个CompletableFuture对象整合起来,无论它们是否存在依赖
11.4.5.对Future和CompletableFuture的回顾
11.5.即时响应——CompletableFuture的completion事件
12
12.1.LocalDate、LocalTime、Instant、Duration 以及Period
第四部分 超越Java 8
13
14
14.3.1.4.第四步:递归地创建由质数组成的Stream
15
15.面向对象和函数式编程的混合:Java 8和Scala的比较
15.1.2.基础数据结构:List、Set、Map、Tuple、Stream以及Option
16
16.2.6.1.为什么编译器不能对Integer和int一视同仁
16.2.6.2.值对象——无论简单类型还是对象类型都不能包打天下
附录
来源:oschina
链接:https://my.oschina.net/jallenkwong/blog/3164835