失效链接处理 |
Java函数式编程 PDF 下载
转载自:https://download.csdn.net/download/dcxy0/10373647
本站整理下载:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.dangdang.com/25201391.html
相关截图:
资料简介:
《Java函数式编程》并不是一本关于Java的书,而是一本关于函数式编程的书。作者由浅入深地介绍了函数式编程的思维方式,并引导读者通过易于掌握的例子、练习和图表来学习和巩固函数式编程的基本原则和*实践。读者甚至可以在阅读的同时编写出自己的函数式类库!本书非常适合对Java有所了解的程序员,无须任何基础的数学理论或是函数式编程经验即可快速上手!
资料目录:
第1章 什么是函数式编程............................. 1 1.1 函数式编程是什么 .............................................2 1.2 编写没有副作用的程序 .....................................4 1.3 引用透明如何让程序更安全 .............................6 1.4 函数式编程的优势 .............................................7 1.5 用代换模型来推断程序 .....................................8 1.6 将函数式原则应用于一个简单的例子 .............9 1.7 抽象到极致 .15 1.8 总结 .............16 第2章 在Java中使用函数 ............................17 2.1 什么是函数 .18 2.1.1 现实世界里的函数 ...............................18 2.2 Java中的函数 ....................................................24 2.2.1 函数式的方法 .......................................24 2.2.2 Java的函数式接口与匿名类 ...............30 2.2.3 复合函数 ...............................................31 2.2.4 多态函数 ...............................................32 2.2.5 通过 lambda简化代码 ..........................33 2.3 高级函数特性 ...................................................36 2.3.1 多参函数怎么样 ...................................36 2.3.2 应用柯里化函数 ...................................37 2.3.3 高阶函数 ...............................................38 2.3.4 多态高阶函数 .......................................39 2.3.5 使用匿名函数 .......................................43 2.3.6 局部函数 ...............................................45 2.3.7 闭包 .46 2.3.8 部分函数应用和自动柯里化 ...............48 2.3.9 交换部分应用函数的参数 ...................53 2.3.10 递归函数 .............................................54 2.3.11 恒等函数 ..............................................56 2.4 Java 8的函数式接口 .........................................58 2.5 调试lambda ..59 2.6 总结 .............62 第3章 让Java更加函数式 ............................63 3.1 使标准控制结构具有函数式风格 ...................64 3.2 抽象控制结构 ...................................................65 3.2.1 清理代码 ...............................................69 3.2.2 if … else的另一种方式 ........................73 3.3 抽象迭代 .....78 3.3.1 使用映射抽象列表操作 .......................79 3.3.2 创建列表 ...............................................80 3.3.3 使用 head和 tail操作...........................81 3.3.4 函数式地添加列表元素 .......................83 3.3.5 化简和折叠列表 ...................................83 3.3.6 复合映射和映射复合 ...........................90 3.3.7 对列表应用作用 ...................................91 3.3.8 处理函数式的输出 ...............................92 3.3.9 构建反递归列表 ...................................93 3.4 使用正确的类型 ...............................................97 3.4.1 标准类型的问题 ...................................97 3.4.2 定义值类型 ...........................................99 3.4.3 值类型的未来 .....................................103 3.5 总结 ...........103 第4章 递归、反递归和记忆化 ................... 104 4.1 理解反递归和递归 .........................................105 4.1.1 探讨反递归和递归的加法例子 .........105 4.1.2 在 Java中实现递归 ............................106 4.1.3 使用尾调用消除 .................................107 4.1.4 使用尾递归方法和函数 .....................107 4.1.5 抽象递归 .............................................108 4.1.6 为基于栈的递归方法使用一个直接替代品 ...........................................112 4.2 使用递归函数 .................................................115 4.2.1 使用局部定义的函数 .........................115 4.2.2 使函数成为尾递归 .............................116 4.2.3 双递归函数:斐波那契数列示例 .....117 4.2.4 让列表的方法变成栈安全的递归 .....120 4.3 复合大量函数 .................................................123 4.4 使用记忆化 .....................................................127 4.4.1 命令式编程中的记忆化 .....................127 4.4.2 递归函数的记忆化 .............................128 4.4.3 自动记忆化 .........................................130 4.5 总结 ...........136 第5章 用列表处理数据 ............................. 138 5.1 如何对数据集合进行分类 .............................138 5.1.1 不同的列表类型 .................................139 5.1.2 对列表性能的相对期望 .....................140 5.1.3 时间与空间,时间与复杂度的取舍 .141 5.1.4 直接修改 .............................................142 5.1.5 持久化数据结构 .................................143 5.2 一个不可变、持久化的单链表实现 .............144 5.3 在列表操作中共享数据 .................................148 5.3.1 更多列表操作 .....................................150 5.4 使用高阶函数递归折叠列表 .........................155 5.4.1 基于堆的 foldRight递归版 ................162 5.4.2 映射和过滤列表 .................................164 5.5 总结 ...........167 第6章 处理可选数据 ................................ 168 6.1 空指针的问题 .................................................169 6.2 空引用的替代方案 .........................................171 6.3 Option数据类型 ..............................................174 6.3.1 从 Option中取值 ................................176 6.3.2 将函数应用于可选值 .........................178 6.3.3 复合 Option处理 ................................179 6.3.4 Option的用例 .....................................181 6.3.5 复合 Option的其他方法 ....................186 6.3.6 复合 Option和 List .............................189 6.4 Option的其他实用程序 ..................................191 6.4.1 检查是 Some还是 None .....................191 6.4.2 equals和 hashcode ..............................192 6.5 如何及何时使用Option ..................................193 6.6 总结 ...........195 第7章 处理错误和异常 ............................. 197 7.1 待解决的问题 .................................................197 7.2 Either类型 ..199 7.2.1 复合 Either ...........................................200 7.3 Result类型 .203 7.3.1 为 Result类添加方法 .........................204 7.4 Result模式 .206 7.5 Result处理进阶 ...............................................213 7.5.1 应用断言 .............................................214 7.5.2 映射 Failure .........................................215 7.5.3 增加工厂方法 .....................................218 7.5.4 应用作用 .............................................220 7.5.5 Result复合进阶 ..................................222 7.6 总结 ...........226 第8章 列表处理进阶 ................................ 228 8.1 length的问题 ...................................................229 8.1.1 性能问题 .............................................229 8.1.2 记忆化的优点 .....................................230 8.1.3 记忆化的缺点 .....................................230 8.1.4 实际性能 .............................................232 8.2 复合List和Result .............................................233 8.2.1 List中返回 Result的方法 ..................233 8.2.2 将 List<Result>转换为 Result<List> 235 8.3 抽象常见列表用例 ................ |