如何选择一个合适的集合类型
???
如何选择一个合适的集合方法
可遍历集合的通用方法:
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 |