多年以來,函式式編程被認為是少數人的遊戲,不適合推廣給普羅大眾。寫作此書的目的就是為了挑戰這種思想。本書將探討如何編寫出簡單、乾淨、易讀的代碼;如何簡單地使用並行計算提高性能;如何準確地為問題建模,並且開發出更好的領域特定語言;如何寫出不易出錯,並且更簡單的並發代碼;如何測試和調試Lambda表達式。如果你已經掌握Java SE,想儘快了解Java 8新特性,寫出簡單幹淨的代碼,那么本書不容錯過。
圖書目錄
前言 IX
第1 章 簡介 1
1.1 為什麼需要再次修改Java 1
1.2 什麼是函式式編程 2
1.3 示例2
第2 章 Lambda 表達式 5
2.1第一個Lambda 表達式 5
2.2 如何辨別Lambda 表達式 6
2.3 引用值,而不是變數 8
2.4 函式接口 9
2.5 類型推斷 10
2.6 要點回顧 12
2.7 練習 12
第3 章 流 15
3.1 從外部疊代到內部疊代 15
3.2 實現機制 17
3.3 常用的流操作 19
3.3.1 collect(toList()) 19
3.3.2 map 19
3.3.3 filter 21
3.3.4 flatMap 22
3.3.5 max 和min23
3.3.6 通用模式 24
3.3.7 reduce 24
3.3.8 整合操作 26
3.4 重構遺留代碼 27
3.5 多次調用流操作 30
3.6 高階函式 31
3.7 正確使用Lambda 表達式31
3.8 要點回顧 32
3.9 練習 32
3.10 進階練習 33
第4 章 類庫 35
4.1 在代碼中使用Lambda 表達式 35
4.2 基本類型 36
4.3 重載解析 38
4.4 @FunctionalInterface 40
4.5 二進制接口的兼容性 40
4.6 默認方法 41
4.7 多重繼承 45
4.8 權衡 46
4.9 接口的靜態方法 46
4.10 Optional 47
4.11 要點回顧 48
4.12 練習48
4.13 開放練習 49
第5 章 高級集合類和收集器 51
5.1 方法引用 51
5.2 元素順序 52
5.3 使用收集器 54
5.3.1 轉換成其他集合54
5.3.2 轉換成值 55
5.3.3 數據分塊 55
5.3.4 數據分組 56
5.3.5 字元串 57
5.3.6 組合收集器58
5.3.7 重構和定製收集器60
5.3.8 對收集器的歸一化處理.65
5.4 一些細節 66
5.5 要點回顧 67
5.6 練習67
第6 章 數據並行化 69
6.1 並行和並發 69
6.2 為什麼並行化如此重要70
6.3 並行化流操作 71
6.4 模擬系統 72
6.5 限制 75
6.6 性能 75
6.7 並行化數組操作 78
6.8 要點回顧 80
6.9 練習 80
第7 章 測試、調試和重構 81
7.1 重構候選項 81
7.1.1 進進出出、搖搖晃晃82
7.1.2 孤獨的覆蓋82
7.1.3 同樣的東西寫兩遍83
7.2 Lambda 表達式的單元測試 85
7.3 在測試替身時使用Lambda 表達式87
7.4 惰性求值和調試 89
7.5 日誌和列印訊息 89
7.6 解決方案:peak 90
7.7 在流中間設定斷點 90
7.8 要點回顧 90
第8 章 設計和架構的原則 91
8.1 Lambda 表達式改變了設計模式 92
8.1.1 命令者模式 92
8.1.2 策略模式 95
8.1.3 觀察者模式 97
8.1.4 模板方法模式 100
8.2 使用Lambda 表達式的領域專用語言102
8.2.1 使用Java 編寫DSL 103
8.2.2 實現 104
VIII | 目錄
8.2.3 評估 106
8.3 使用Lambda 表達式的SOLID 原則 106
8.3.1 單一功能原則 107
8.3.2 開閉原則 109
8.3.3 依賴反轉原則 111
8.4 進階閱讀 114
8.5 要點回顧 114
第9 章 使用Lambda 表達式編寫並發程式 115
9.1 為什麼要使用非阻塞式I/O 115
9.2 回調116
9.3 訊息傳遞架構 119
9.4 末日金字塔 120
9.5 Future 122
9.6 CompletableFuture 123
9.7 回響式編程 126
9.8 何時何地使用新技術128
9.9 要點回顧 129
9.10 練習 129
第10 章 下一步該怎么辦 131
封面介紹 133