作品简介

多年以来,函数式编程被认为是少数人的游戏,不适合推广给普罗大众。写作此书的目的就是为了挑战这种思想。本书将探讨如何编写出简单、干净、易读的代码;如何简单地使用并行计算提高性能;如何准确地为问题建模,并且开发出更好的领域特定语言;如何写出不易出错,并且更简单的并发代码;如何测试和调试Lambda表达式。

如果你已经掌握Java SE,想尽快了解Java 8新特性,写出简单干净的代码,那么本书不容错过。

Richard Warburton(作者),一位经验丰富的技术专家,善于解决复杂深奥的技术问题,拥有华威大学计算机科学专业博士学位。近期他一直从事高性能计算方面的数据分析工作。他是英国伦敦Java社区的领导者,组织过面向Java 8中Lambda表达式、日期和时间的Adopt-a-JSR项目,以及Openjdk Hackdays活动。Richard还是知名的会议演讲嘉宾,曾在JavaOne、DevoxxUK和JAX London等会议上演讲。

王群锋(译者),毕业于西安电子科技大学,现任职于IBM西安研发中心,从事下一代统计预测软件的开发运维工作。

作品目录

  • 业界评论
  • 前言
  • 为什么要阅读本书
  • 本书读者对象
  • 怎样阅读本书
  • 使用代码示例
  • Safari(^{®}) Books Online
  • 联系我们
  • 致谢
  • 第 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 章 下一步该怎么办
  • 封面介绍
展开全部