作品简介

《Java函数式编程》并不是一本关于Java的书,而是一本关于函数式编程的书。作者由浅入深地介绍了函数式编程的思维方式,并引导读者通过易于掌握的例子、练习和图表来学习和巩固函数式编程的基本原则和最佳实践。读者甚至可以在阅读的同时编写出自己的函数式类库!

(法)皮埃尔-伊夫斯·索蒙特(Pierre-Yves Saumont)是一名拥有三十年设计和构建企业级软件的Java开发者。他目前是Alcatel-Lucent Submarine Networks公司的一名软件研发工程师。

作品目录

  • 译者序
  • 译者简介
  • 为什么要函数式编程
  • 序言
  • 致谢
  • 关于本书
  • 1 什么是函数式编程
  • 1.1 函数式编程是什么
  • 1.2 编写没有副作用的程序
  • 1.3 引用透明如何让程序更安全
  • 1.4 函数式编程的优势
  • 1.5 用代换模型来推断程序
  • 1.6 将函数式原则应用于一个简单的例子
  • 1.7 抽象到极致
  • 1.8 总结
  • 2 在Java中使用函数
  • 2.1 什么是函数
  • 2.2 Java中的函数
  • 2.3 高级函数特性
  • 2.4 Java 8的函数式接口
  • 2.5 调试lambda
  • 2.6 总结
  • 3 让Java更加函数式
  • 3.1 使标准控制结构具有函数式风格
  • 3.2 抽象控制结构
  • 3.3 抽象迭代
  • 3.4 使用正确的类型
  • 3.5 总结
  • 4 递归、反递归和记忆化
  • 4.1 理解反递归和递归
  • 4.2 使用递归函数
  • 4.3 复合大量函数
  • 4.4 使用记忆化
  • 4.5 总结
  • 5 用列表处理数据
  • 5.1 如何对数据集合进行分类
  • 5.2 一个不可变、持久化的单链表实现
  • 5.3 在列表操作中共享数据
  • 5.4 使用高阶函数递归折叠列表
  • 5.5 总结
  • 6 处理可选数据
  • 6.1 空指针的问题
  • 6.2 空引用的替代方案
  • 6.3 Option数据类型
  • 6.4 Option的其他实用程序
  • 6.5 如何及何时使用Option
  • 6.6 总结
  • 7 处理错误和异常
  • 7.1 待解决的问题
  • 7.2 Either类型
  • 7.3 Result类型
  • 7.4 Result模式
  • 7.5 Result处理进阶
  • 7.6 总结
  • 8 列表处理进阶
  • 8.1 length的问题
  • 8.2 复合List和Result
  • 8.3 抽象常见列表用例
  • 8.4 自动并行处理列表
  • 8.5 总结
  • 9 使用惰性
  • 9.1 理解严格和惰性
  • 9.2 实现惰性
  • 9.3 只有惰性才能做到的事
  • 9.4 为何不要用Java 8中的Stream
  • 9.5 创建一个惰性列表数据结构
  • 9.6 惰性的真正本质
  • 9.7 处理无限流
  • 9.8 避免null引用和可变字段
  • 9.9 总结
  • 10 用树进行更多数据处理
  • 10.1 二叉树
  • 10.2 实现二叉搜索树
  • 10.3 从树中删除元素
  • 10.4 合并任意树
  • 10.5 折叠树
  • 10.6 映射树
  • 10.7 平衡树
  • 10.8 总结
  • 11 用高级树来解决真实问题
  • 11.1 性能更好且栈安全的自平衡树
  • 11.2 红黑树的用例:map
  • 11.3 实现函数式优先队列
  • 11.4 元素不可比较的优先队列
  • 11.5 总结
  • 12 用函数式的方式处理状态改变
  • 12.1 一个函数式的随机数发生器
  • 12.2 处理状态的通用API
  • 12.3 通用状态处理
  • 12.4 总结
  • 13 函数式输入/输出
  • 13.1 在上下文中应用作用
  • 13.2 读取数据
  • 13.3 真正的函数式输入/输出
  • 13.4 总结
  • 14 通过actor共享可变状态
  • 14.1 actor模型
  • 14.2 构建actor框架
  • 14.3 开始使用actor
  • 14.4 总结
  • 15 以函数式的方式解决常见问题
  • 15.1 使用断言来校验数据
  • 15.2 从文件中读取属性
  • 15.3 转换命令式程序:XML读取器
  • 15.4 总结
  • 附录A 使用Java 8的函数式特性
  • 附录B Monad
  • 附录C 敢问路在何方
展开全部