|
-- 會員 / 註冊 --
|
|
|
|
Scala集合技術手冊 ( 簡體 字) |
作者:晁岳攀 | 類別:1. -> 程式設計 -> Scala |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 44320 詢問書籍請說出此書號!【缺書】 NT售價: 290 元 |
出版日:6/1/2016 |
頁數:184 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121287763 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:序 在我十六年多的編程生涯中,大部分項目中我都使用Java開發。Java的生態圈非常的龐大而豐富,可以幫助我快速地實現項目的架構和開發。雖然感覺Java的語法有很多?唆的地方,也調研過Groovy、Python等編程語言,但還是覺得Java比較適合開發工作。但是當我嘗試使用Scala實現了一個高性能的消息系統的時候,我徹底地喜歡上了Scala,它簡潔的語法、豐富的特性、面向對象和函數式編程的美妙結合都給我留下了深刻的印象。因為Scala是基于JVM的編程語言,它可以使用Java實現的庫,充分利用Java生態圈中已有的庫,而性能上又不會有多少損失,所以我經常使用Scala做一些編程的工作。通過閱讀Kafka等Scala實現框架,也促使我更加地堅信Scala的簡潔高效。 但是,完全掌握Scala的特性、熟練使用它的庫和編程方式進行開發卻不是一件容易的事情。如果有Java編程經驗,則Scala入門會是一件很容易的事情,但是到專家級別卻是一個曲折的過程。這是因為,一、Scala的語法相比其他語言,如Java、Python、Go等要復雜很多,要想完全理解和掌握需要較長的時間。二、Scala本身提供了非常多的庫,尤其是占重要部分的集合庫,只有熟練掌握它們才能輕松地應用到開發中。 對于第一個問題,現在已經有了多本介紹和學習Scala語法的書,尤其是剛剛出版的Scala之父Martin Odersky編寫的《Programming in Scala》第三版,都是很好的學習和深入了解Scala語法的圖書。通過編程實踐以及閱讀其他Scala開發的項目,也會很快地提高Scala語法的掌握程度。 對于第二個問題,尤其是Scala集合框架的全面介紹,并沒有太好的學習資料,相關的Scala書籍中會有一兩章關于Scala集合的介紹,官方的網站上也有多篇關于Scala集合的教程,但是總體來說都是粗略地或者說局部地介紹了Scala集合框架的類和方法,看過之后若有所得,但并不踏實,總是感覺沒有全面地掌握Scala集合。所以針對這個需求,我動手編寫了這本書,主要目的就是編寫一本全面、專門、深入地介紹Scala集合的書與大家分享。 作為一本專門介紹Scala集合的圖書,它有一些其他技術圖書沒有的特色: y 圖文并茂。 本書不僅提供了多幅插圖,列出了并發/非并發集合類和Trait的繼承關系,還為最主要的集合的方法提供了直觀的圖例,可以實現見圖識意。 序 v y 歸類。 將類似的方法放在一起介紹,比如 map和flatmap,scan、scanLeft和scanRight,size和length等。 y 對比。 將容易混淆的方法進行對比,剖析它們之間的區別,比如head、last、init、tail,reduce和fold方法的區別等。 y 代碼實例。通過最簡單的代碼類和方法的功能。代碼簡短而功能直接。 y 表格。通過表格進行匯總和知識整理。 y 全面。本書詳細介紹了Scala集合絕大部分的類和方法,對于一些類還介紹了它的歷史優化過程和當前的問題。 y 深入。對于一些典型的集合類,本書還深入介紹了它們的底層實現,通過底層實現了解它們的特性和性能。 我期望能通過多種方式搭建起本書的架構,多方位地幫助讀者學習和掌握Scala集合庫。而且本書還能作為案頭的一本常用查找手冊,當對Scala集合的類或者方法有疑惑時,可以通過翻看本書找到答案。 聯系方式 盡管我盡量保持本書內容的準確性,每一個方法和例子都編寫測試過,但是因為Scala集合框架的復雜和知識點比較多,加之作者水平有限,疏漏和錯誤在所難免,懇請廣大讀者批評指正。如果你發現了錯誤或好的建議,也可以聯系我。我的聯系方式如下: 郵箱:oldnest@gmail.com 新浪微博:colobu 致謝 特別感謝電子工業出版社的編輯張春雨,沒有你的努力和辛苦工作,就不會有本書順利的出版。沒有你的激勵,可能本書的內容只能三三兩兩地散落在我的筆記或者博客中,不能集結出版。 感謝我的老婆和兒子。寫書占用了我大部分的業余時間,不能花更多的時間陪伴你們。春節的時候也只能讓你們自己回娘家,給我獨自的時間寫稿和修改,沒有你們的理解和支持,我也不能安心地寫作。 謝謝閱讀本書的朋友,如果沒有你們對相關知識的渴求,也就不會有本書的編寫。你們對Scala的喜愛,對Scala集合框架的知識的渴求,就是我寫本書最大的動力。 |
內容簡介:《Scala集合技術手冊》是首部全面介紹Scala集合框架的圖書,它基于最新的Scala 2.11編寫,深入全面地介紹了Scala集合框架的集合類和方法,通過圖例、代碼示例、表格等多種方式多方位地介紹集合類的方法和實現,并且對相關的類型的性能進行分析和比較,總結了各個集合類的特點,幫助讀者快速地掌握Scala集合框架,并且可以作為日常Scala開發的參考書。 |
目錄:推薦序 . . . . iii 序 . . . . iv 第1章 Scala集合庫簡介 . . . 1 Scala編程語言 ...............................................................1 Scala集合 ...................................................................2 誰應該閱讀此書 .............................................................7 為什么寫這本書 .............................................................7 印刷體變化 ..................................................................7 內容概要 ....................................................................8 第2章 Traversable. . . . 9 初始化Traversable對象 ......................................................10 集合的靜態類型和類型擦除 .................................................12 對Traversable實例中每個元素執行操作(foreach) ...........................13 平展一個Traversable實例 ...................................................14 轉置Traversable集合(transpose) ...........................................17 unzip一個Traversable .......................................................18 連接兩個Traversable到一個新的Traversable ..................................19 連接多個Traversable對象到一個新的Traversable ..............................21 利用偏函數篩選元素 ........................................................22 對所有的元素應用一個函數,并將結果放入一個新的Traversable對象中 ........23 利用scan計算Traversable元素的階乘 ........................................24 使用指定的函數折疊Traversable的元素 ......................................26 判斷一個Traversable非空 ...................................................28 得到Traversable對象的特定的元素 ...........................................29 得到Traversable對象的尾部 .................................................30 目錄vii 選擇Traversable 的一段子集 . . . . 31 選取Traversable 對象的前N 個元素 . . . 32 跳過開頭的前N 個元素,選擇剩余的元素 . . . 33 根據條件篩選元素 . . . . 34 給Traversable 對象的元素分組 . . . . 35 檢查Traversable 對象中的元素是否滿足條件 . . . 37 統計滿足斷言的元素個數 . . . . 37 歸約操作 . . . . . 38 在Traversable 對象上調用聚合函數 . . . . 40 基于Traversable 對象生成字符串 . . . . 41 集合類型轉換 . . . . 42 復制元素到一個數組 . . . . 44 返回一個Traversable 對象的視圖view . . . 45 得到Traversable 對象的底層實現 . . . . 46 使用一個相同的元素填充元素 . . . . 46 在某個值域上生成指定間隔的隊列 . . . . 47 tabulate . . . . . 48 生成空的Traversable 對象 . . . . 48 得到Traversable 對象的串行對象和并行對象 . . . 49 第3 章 Iterable . . . 51 將Iterable 對象分組 . . . . 53 以滑動窗口的方式分組Iterable 對象 . . . 54 zip 兩個集合 . . . . . 55 zipAll 兩個長度不同的集合 . . . . 56 使用本身的索引zip 一個Iterable 集合 . . . 57 檢查兩個Iterables 是否包含相同的元素 . . . 57 得到尾部的N 個元素 . . . . 58 去掉尾部的N 個元素 . . . . 59 第4 章 Seq . . . . 60 得到序列的索引集合 . . . . 61 序列的長度 . . . . . 61 得到指定索引的元素 . . . . 62 尋找指定元素的索引 . . . . 63 尋找滿足條件的元素索引 . . . . 64 viii 目錄 尋找指定的子序列 . . . . 64 尋找滿足條件的子序列的長度 . . . . 65 增加元素到序列中 . . . . 65 替換序列中的元素 . . . . 66 更新指定位置的索引 . . . . 66 排序 . . . . . 67 反轉一個序列 . . . . 68 序列是否包含某個前綴或者后綴 . . . . 69 序列是否包含某子序列 . . . . 69 檢查兩個序列對應的元素是否滿足斷言 . . . 69 集合操作 . . . . . 70 去掉重復的元素 . . . . 71 得到元素的各種排列 . . . . 72 得到序列的指定長度的元素的組合 . . . . 72 將序列進行轉換 . . . . 73 偏函數的應用 . . . . 74 IndexedSeq 和LinearSeq . . . . 75 Range 和NumericRange . . . . 76 Vector . . . . . 77 第5 章 Set . . . . 80 檢查Set 集合是否包含元素 . . . . 82 增加一個元素或者一組元素到Set 集合中 . . . 82 從Set 集合中去掉一個元素或一組元素 . . . 83 二元Set 集合運算 . . . . 84 更新一個可變Set 集合的元素 . . . . 85 克隆Set 集合 . . . . 86 SortedSet . . . . . 86 BitSet . . . . . 88 HashSet . . . . . 90 ListSet . . . . . 91 LinkedHashSet . . . . 92 第6 章 Map . . . 94 初始化 . . . . . 94 根據鍵值查找值 . . . . 95 目錄ix 包含 . . . . . 96 增加新的鍵值對 . . . . 97 刪除鍵 . . . . . 97 根據鍵更新它的值 . . . . 98 得到鍵的集合 . . . . 99 得到值的集合 . . . . 99 遍歷Map 集合 . . . . 100 如何將一個可變Map 集合轉換成不可變Map 集合 . . 100 新的轉換函數 . . . . 101 偏函數 . . . . . 101 克隆 . . . . . 102 反轉Map 的鍵值對 . . . . 102 將一個Set 集合轉換成Map 集合 . . . . 103 IntMap, LongMap . . . . 103 HashMap . . . . . 104 SortedMap 和immutable.TreeMap . . . . 104 immutable.ListMap,mutable.ListMap . . . 105 mutable.LinkedHashMap . . . . 105 mutable.MultiMap . . . . 106 mutable.OpenHashMap . . . . 107 mutable.WeakHashMap . . . . 107 第7 章 數組 . . .109 數組的初始化 . . . . 110 數組的長度 . . . . . 112 更新數組 . . . . . 113 連接兩個數組 . . . . 113 復制數組 . . . . . 113 生成等差數列 . . . . 114 填充數組 . . . . . 114 tabulate . . . . . 115 ArrayOps . . . . . 115 Searching . . . . . 116 WrappedArray . . . . 116 x 目錄 第8 章 字符串(String 和StringBuilder) . .117 字符串方法 . . . . . 118 拼接字符串多次 . . . . 119 把首字母大寫 . . . . 119 字符串比較 . . . . . 120 字符串格式化 . . . . 120 按照換行符分割字符串 . . . . 123 正則表達式 . . . . . 124 分割字符串 . . . . . 124 strip 字符串 . . . . . 125 集合方法 . . . . . 126 字符串竄改(String Interpolation) . . . 126 StringBuilder . . . . 128 第9 章 緩沖器 . . .129 增加元素 . . . . . 129 移除元素 . . . . . 130 Trim、clear 和clone . . . . 131 ListBuffer, ArrayBuffer . . . . 132 RingBuffer . . . . . 132 第10 章 列表 . . .134 Nil, :: . . . . . 134 初始化,以及:: 和::: 操作符 . . . . 135 模式匹配 . . . . . 136 MutableList . . . . . 136 使用列表實現快速排序 . . . . 137 Option . . . . . 137 第11 章 棧和隊列 . . .139 棧(Stack). . . . . 139 ArrayStack . . . . . 141 不可變隊列(immutable.Queue) . . . . 143 可變隊列(mutable.Queue) . . . . 144 優先級隊列(PriorityQueue) . . . . 144 目錄xi 第12 章 流 . . . .147 初始化:#:: 和#::: . . . . 148 流相關類 . . . . . 150 記憶化(memoization) . . . . 150 棧溢出(StackOverflowError) . . . . 150 OOM 問題 . . . . . 152 無限隨機數流 . . . . 153 無限整數流 . . . . . 153 中綴表達式和模式匹配 . . . . 153 無限流 . . . . . 154 蓄水池抽樣算法 . . . . 156 第13 章 并行集合 . . .158 并行集合的類型 . . . . 159 可產生副作用的操作(Side-Effecting Operations) . . 160 非結合操作(Non-Associative Operations) . . . 161 性能 . . . . . 162 串行集合和并行集合的轉換 . . . . 163 不同集合類型之間的轉換 . . . . 164 并發集合配置 . . . . 165 第14 章 Scala 集合總結 . . .168 相等(Equality) . . . . 168 性能 . . . . . 170 與Java 集合類的轉換 . . . . 172 技巧和陷阱 . . . . . 174 發布訂閱類 . . . . . 177 for 推導式 (for comprehensions) . . . . 178 其他集合庫 . . . . . 179 |
序: |
|