如何选择一个合适的集合类型
???
如何选择一个合适的集合方法
可遍历集合的通用方法:
| Method | Description | 
|---|---|
| c collect f | 将传入的偏函数作用到集合的所有元素上,根据偏函数的定义所生成新的元素组成一个新的集合 | 
| c count p | 对集合中满足该谓词的元素进行计数 | 
| c1 diff c2 | 返回c1和c2集合中的差集 | 
| c drop n | 返回集合中除了前n个元素后的所有元素 | 
| c dropWhile p | 返回一个集合,包含”满足该谓词的元素的最长前缀” | 
| c exists p | 如果集合中的任何一个元素满足该谓词,返回true,否则返回false | 
| c filter p | 返回集合中所有满足该谓词为true的元素 | 
| c filterNot p | 返回集合中所有满足该谓词为false的元素 | 
| c find p | 返回集合中第一个满足谓词条件的元素Some[A],如果没有任何匹配则返回None | 
| c flatten | 展开一个嵌套的集合,比如讲一个List[A](List[A])展开为List[A] | 
| c flatMap f | 将一个方法作用到c集合中的所有元素上,并将由函数结果组成的嵌套集合展开 | 
| c foldLeft(z)(op) | 从左至右将操作作用到c集合中的连续元素,起始元素为z | 
| c foldRight(z)(op) | 从右至左将操作作用到c集合中的连续元素,起始元素为z | 
| c forAll p | 如果集合中的所有元素满足谓词条件p,返回true,否则返回false | 
| c foreach f | 将f方法作用到集合的所有元素上 | 
| c groupBy f | 根据f方法将集合分成一个包含Map的集合 | 
| c hasDefiniteSize | 测试集合是否拥有优先长度,比如Stream或Iterator则会返回false | 
| c head | 返回集合的第一个元素,如果集合为空则会抛出NoSuchElementException异常 | 
| c headOption | 返回集合的第一个元素,如果集合为空返回None,不为空则返回Some[A] | 
| c init | 选取集合中除了最后一个元素的所有元素,如果集合为空则会抛出NoSuchElementException异常 | 
| c1 intersect c2 | 获取两个集合的交集元素作为一个新的集合 | 
| c isEmpty | 判断集合是否为空,true或false | 
| c last | 返回集合的最后一个元素,如果集合为空则抛出NoSuchElementException异常 | 
| c lastOption | 返回集合的最后一个元素,集合为空返回None,否则返回Some[A] | 
| c map f | 将f方法作用到集合的所有元素作为一个新的集合返回 | 
| c max | 返回集合中最大的元素 | 
| c min | 返回集合中最小的元素 | 
| c nonEmpty | 判断集合是否不为空,true或false | 
| c par | 返回该集合一个并行方式的实现,比如Array.par返回ParArray | 
| c partition p | 根据谓词的算法返回两个集合 | 
| c product | 返回集合中所有元素的倍数 | 
| c reduceLeft op | 和foldLeft的作用一样,不过是从集合的第一个元素开始 | 
| c reduceRight op | 和foldRight作用一样,不过是从集合的最后一个元素开始 | 
| c reverse | 将集合中的所有元素翻转顺序后作为一个新的集合返回 | 
| c size | 返回集合的长度 | 
| c slice(from, to) | 从form到to位置切片集合中的元素作为一个新的集合返回 | 
| c sortWith f | 根据f中定义的比较方法对集合进行排序并返回 | 
| c span p | 返回两个集合,第一个由c.takeWhile(p)创建,第二个由c.dropWhile(p)创建 | 
| c splitAt n | 将集合在n的元素位置分割后返回两个集合,这两个集合组成一个嵌套集合返回 | 
| c sum | 返回集合中元素的和 | 
| c tail | 返回集合中除了第一个元素的所有元素作为一个新的集合 | 
| c take n | 返回集合中的前N个元素 | 
| c takeWhile p | 如果p条件为true则从集合中返回元素,p为false时停止 | 
| c1 union c2 | 返回两个集合的并集 | 
| c unzip | zip的反向操作,通过将一个元素拆分为两部分,将集合拆分为两个集合 | 
| c view | 返回集合的lazy视图 | 
| c1 zip c2 | 将两个集合中的元素组合成对,合并成一个集合 | 
| c zipWithIndex | 将集合的元素和索引进行zip | 
可变集合的方法:
| Method | Description | 
|---|---|
| c += x | 将元素x添加的集合x上 | 
| c += (x,y,z) | 将多个元素添加的集合上 | 
| c1 ++= c2 | 将一个集合添加到另一个集合上 | 
| c −= x | 从集合中移除元素 | 
| c −= (x,y,z) | 从集合中移除多个元素 | 
| c1 −−= c2 | 从一个集合中移除另一个集合的所有元素 | 
| c(n) = x | 对集合中的一个元素赋值 | 
| c clear | 移除集合中的所有元素 | 
| c remove n | 移除集合中索引位置n的元素 | 
| c.remove(n, len) | 从索引位置n处开始移除len个元素 | 
不可变集合操作:
| Method | Description | 
|---|---|
| c1 ++ c2 | 讲一个集合添加到另一个集合中作为一个新的集合返回 | 
| c :+ e | 将元素添加到一个元素上并作为一个新的集合返回 | 
| e +: c | 将元素添加到一个集合的首部并返回一个新的集合 | 
| e :: list | 将元素添加到List的首部并返回一个新的List,仅对List可用 | 
可变和不可变Map的通用方法:
Methods for immutable maps
| Method | Description | 
|---|---|
| m - k | 按键值k移除一个Map | 
| m - (k1, k2, k3) | 按多个键值移除多个Map | 
| m – c | 返回一个键值在集合中的Map | 
| m – List(k1, k2) | 返回一个键值在集合中的Map | 
Methods for mutable maps
| Method | Description | 
|---|---|
| mm += (k -> v) | 向可变Map添加一个键值对 | 
| mm += (k1 -> v1, k2 -> v2) | 向可变Map添加多个键值对 | 
| mm ++= c | 将集合中的多个元素添加到可变Map | 
| mm ++= List(3 -> “c”) | 将集合中的多个元素添加到可变Map | 
| mm -= k | 移除一个键值为k的元素 | 
| mm -= (k1, k2, k3) | 移除多个键值为Kn的元素 | 
| mm –= c | 从可变集合移除集合中的所有元素 | 
Methods for both mutable and immutable maps
| Method | Description | 
|---|---|
| m(k) | 返回键为k的值 | 
| m contains k | 判断Map中是否包含键为k的元素 | 
| m filter p | 返回一个键或值满足谓词条件的Map | 
| m filterKeys p | 返回一个键值满足谓词条件的Map | 
| m get k | 如果键k存在,返回对应的值Some[A],否则返回None | 
| m getOrElse(k, d) | 返回键k的值,不存在时返回默认值d | 
| m isDefinedAt k | 如果返回键k返回true | 
| m keys | 返回所有键作为一个Iterable | 
| m keyIterator | 返回所有键作为一个Iterator | 
| m keySet | 返回所有的键作为一个Set | 
| m mapValues f | 将f方法作用到所有的值上并返回一个新的Map | 
| m values | 返回所有值作为一个Iterable | 
| m valuesIterator | 返回所有值作为一个Iterator |