搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Scala集合技术手册
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121287763
  • 作      者:
    晁岳攀著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2016
收藏
编辑推荐

√ Scala集合库不可多得的中文资料

√ 作为Scala的制胜法宝本书教你如何驾驭

√ 面向实际问题用示例代码讲解类的使用和原理

√ 全新角度实现基本数据结构是提升功力的不二法门

展开
作者简介

晁岳攀,2013.8 ? ThisTech 项目经理 专注于视频广告插入技术2007.10 ? 2013.7 Motorola 高级软件工程师、项目经理 主要为美国*大的电视运行商Comcast, Time Warner,法国电信, 江苏有线,北京歌华等做有线电视的视频点播等2003 ? 2007 清华同方 开发清华同方ezONE开发平台以及相关的中间件技术2000 ? 2003 北京方菱 公安系统相关软件的研发

展开
内容介绍

《Scala 集合技术手册》是一本全面介绍 Scala 集合框架的图书,它基于新的 Scala 2.11 编写,深入全面地介绍了 Scala 集合框架的集合类和方法,通过图例、代码示例、表格等多种 方式多方位地介绍集合类的方法和实现,并且对相关的类型的性能进行分析和比较,总结了 各个集合类的特点,帮助读者快速地掌握 Scala 集合框架,并且可以作为日常 Scala 开发的参 考书。 《Scala 集合技术手册》适合架构师、软件开发工程师、测试人员以及其他对 Scala 集合感兴趣的相关人员阅读。

展开
精彩书摘

推荐序

非常高兴国内有第一本用中文原创的 Scala 书籍。Scala 俨然成为了大数据领域的明星语言, 它强大的抽象和并发能力,以及高效的集合操作让它抓住了大数据的这波浪潮。

提起 Scala 很多人可能会先想到多范式、高并发等特点,其实在集合库的设计上 Scala 也 是非常大胆进取的。比如引入了 Tuple、不可变集合,对很多集合内置了map/reduce/filter/fold 等操作,支持模式匹配,等等,让数据处理得到了极大的简化。

另外,Scala 在设计上对 Java 的一些“不一致性”或“直观性”做了修正,比如用 Any 类 型统一了 Java 里的引用类型和基础类型,用统一的 Int 替代了 Java 里的 Integer 和 int 两种类型, 并针对这种值类型 (value type) 的运行时 Boxing/Unboxing 做了优化。还有 Java 的数组类型 在设计上出于计算的方便被设计为了天然支持协变特性,这在 Scala 2.X 版本得到了修正,去 掉了协变。对于相等性的比较让直观的“==”等价于“equals”。

Scala 里的不可变集合主要从函数式语言的集合库里演化而来,一方面在并发情况下这些 数据避免了竞争所需要的锁的开销,另一方面在底层则通过共享数据降低了集合在更新时生 成新对象的成本。配合惰性计算 (lazy evaluation) 可以发挥更大的威力。当然 Scala 也不反对 使用可变集合,在追求性能的地方你可以根据自己的具体情况做出选择。

在学习 Scala 的集合库时,建议深入地了解一些“关键”集合的实现,比如 List,它跟 Java 里的 List 有着完全不同的设计,深入体会这个源自 Lisp 的递归结构的数据类型所表达的 含义,对学习 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

选择 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

寻找指定的子序列  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

包含  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

第 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

第 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

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证