Simple Scala: Sequences's Methods

如何选择一个合适的集合类型

???

如何选择一个合适的集合方法

可遍历集合的通用方法:

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