Java 8 函数式编程 PDF 文档
多年以来,函数式编程被认为是少数人的游戏,不适合推广给普罗大众。写作此书的目的就是为了挑战这种思想。本书将探讨如何编写出简单、干净、易读的代码 ;如何简单地使用并行计算提高性能 ;如何准确地为问题建模,并且开发出更好的领域特定语言 ;如何写出不易出错,并且更简单的并发代码 ;如何测试和调试 Lambda 表达式。
如果你已经掌握 Java SE,想尽快了解 Java 8 新特性,写出简单干净的代码,那么本书不容错过。
多年以来,函数式编程被认为是少数人的游戏,这些人总是强调自己在智力上的优越性,认为函数式编程的智慧不适合推广给普罗大众。写作此书的目的就是为了挑战这种思想,函数式编程并没有多么了不起,也绝不是少数人的游戏。
在过去的两年中,我请伦敦 Java 社区的开发人员以各种方式测试 Java 8 的新特性。我发现很多人都喜欢 Java 8 的新用法和类库。他们有可能被一些术语和高大上的概念吓到,但是稍稍一丁点儿函数式编程技巧都能给编程带来便利,他们对此喜不自胜。人们津津乐道的话题之一是使用新的 Stream API 操作对象和集合类时(比如从所有的唱片列表中过滤出在英国本地出品的唱片时),代码是多么易读。
组织这些 Java 社区活动,让我认识到了示例代码的重要性。人们通过不断地阅读和消化这些简单的示例,最终归纳出某种模式。我还意识到术语是多么令人讨厌,因此,在介绍一个晦涩的概念时,我都会给出通俗易懂的解释。
对很多人来说,Java 8 提供的函数式编程元素有限:没有单子 1,没有语言层面的惰性求值,也没有为不可变性提供额外支持。对实用至上的程序员来说,这没什么大不了的,我们只想在类库级别抽象,写出简单干净的代码来解决业务问题。如果有人为我们写出这样的类库,那再好不过了,这样我们就可以把主要精力放在日常工作上了。
目录
前言
第 1 章 简介
1.1 为什么需要再次修改 Java
1.2 什么是函数式编程
1.3 示例
第 2 章 Lambda 表达式
2.1 第一个 Lambda 表达式
2.2 如何辨别 Lambda 表达式
2.3 引用值,而不是变量
2.4 函数接口
2.5 类型推断
2.6 要点回顾
2.7 练习
第 3 章 流
3.1 从外部迭代到内部迭代
3.2 实现机制
3.3 常用的流操作
3.3.1 collect(toList())
3.3.2 map
3.3.3 filter
3.3.4 flatMap
3.3.5 max 和 min
3.3.6 通用模式
3.3.7 reduce
3.3.8 整合操作
3.4 重构遗留代码
3.5 多次调用流操作
3.6 高阶函数
3.7 正确使用 Lambda 表达式
3.8 要点回顾
3.9 练习
3.10 进阶练习
第 4 章 类库
4.1 在代码中使用 Lambda 表达式
4.2 基本类型
4.3 重载解析
4.4 @FunctionalInterface
4.5 二进制接口的兼容性
4.6 默认方法
4.7 多重继承
4.8 权衡
4.9 接口的静态方法
4.10 Optional
4.11 要点回顾
4.12 练习
4.13 开放练习
第 5 章 高级集合类和收集器
5.1 方法引用
5.2 元素顺序
5.3 使用收集器
5.3.1 转换成其他集合
5.3.2 转换成值
5.3.3 数据分块
5.3.4 数据分组
5.3.5 字符串
5.3.6 组合收集器
5.3.7 重构和定制收集器
5.3.8 对收集器的归一化处理
5.4 一些细节
5.5 要点回顾
5.6 练习
第 6 章 数据并行化
6.1 并行和并发
6.2 为什么并行化如此重要
6.3 并行化流操作
6.4 模拟系统
6.5 限制
6.6 性能
6.7 并行化数组操作
6.8 要点回顾
6.9 练习
第 7 章 测试、调试和重构
7.1 重构候选项
7.1.1 进进出出、摇摇晃晃
7.1.2 孤独的覆盖
7.1.3 同样的东西写两遍
7.2 Lambda 表达式的单元测试
7.3 在测试替身时使用 Lambda 表达式
7.4 惰性求值和调试
7.5 日志和打印消息
7.6 解决方案:peak
7.7 在流中间设置断点
7.8 要点回顾
第 8 章 设计和架构的原则
8.1 Lambda 表达式改变了设计模式
8.1.1 命令者模式
8.1.2 策略模式
8.1.3 观察者模式
8.1.4 模板方法模式
8.2 使用 Lambda 表达式的领域专用语言
8.2.1 使用 Java 编写 DSL
8.2.2 实现
8.2.3 评估
8.3 使用 Lambda 表达式的 SOLID 原则
8.3.1 单一功能原则
8.3.2 开闭原则
8.3.3 依赖反转原则
8.4 进阶阅读
8.5 要点回顾
第 9 章 使用 Lambda 表达式编写并发程序
9.1 为什么要使用非阻塞式 I/O
9.2 回调
9.3 消息传递架构
9.4 末日金字塔
9.5 Future
9.6 CompletableFuture
9.7 响应式编程
9.8 何时何地使用新技术
9.9 要点回顾
9.10 练习
第 10 章 下一步该怎么办
下载地址:https://www.wenjiangs.com/wp-content/uploads/2023/07/nJsqrUnj9c6i4nFt.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论