0%

Scala方法查询记录

仅供查询,禁止转载

  • 一般的Int类型的都可以通过.max.min获取最大最小元素

List的一些方法和用途

方法 用途
List()或者Nil 表示空列表
List(“Cool”,”Tools”) 创建一个新的List[String],包含两个值:”Cool”,”Tools”
val thrill = “Will”::”Fill”::Nil 创建一个新的List[String]包含两个值:”Will”和”Fill”
List(“a”,”b”):::List(“c”,”d”) 将两个列表拼接起来(返回一个新的列表List(“a”,”b”,”c”,”d”))
thrill(2) 返回列表thrill下标为2(从0开始计数)
thrill.count(s => s.length == 4) 对thrill中长度为4的字符串进行计数
thrill.drop(2) 返回去掉了thrill的头两个元素的列表
thrill.dropRight(2) 返回去掉了thrill后两个元素的列表
thrill.exists(s => s==”until”) 判断thrill中是否有字符串元素的值为”until”,返回值为Boolean
thrill.filter(s => s.length == 4) 按顺序返回列表thrill中所有长度为4的元素列表
thrill.forall(s => s.endsWith(“1”)) 表示列表中是否所有元素都以字母”1”结尾
thrill.foreach(s => println(s)) / thrill.foreach(println) 遍历列表执行打印
thrill.head 返回列表的首个元素
thrill.init 返回列表thrill除最后一个元素之外其他元素组成的列表
thrill.isEmpty 判断列表是否为空
thrill.last 返回thrill的最后一个元素
thrill.length 返回列表的元素个数
thrill.map(s => s + “y”) 返回一个对列表thrill所有字符串元素末尾添加”y”的新字符串列表
thrill.makeString”, “ 返回用列表thrill的所有元素组合成的字符串,以”, “连接各个元素
thrill.filterNot(s => s.length == 4) 按顺序返回列表中所有长度不为4的元素列表
thrill.reverse 返回包含列表thrill的逆序列表
thrill.sort( (s,t) => s.charAt(0).toLower < t.charAt(0).toLower) 返回包含thrill的所有元素,按照首字母小写顺序排序的列表
thrill.tail 返回列表thrill除首个元素之外其他元素组成的列表

常用的集操作

操作 效果
val nums = Set(1,2,3) 创建一个不可变集(nums.toString返回Set(1,2,3))
nums + 5 添加一个元素(返回Set(1,2,3,5))
nums - 3 移除一个元素(返回Set(1,2))
nums ++ List(5,6) 添加多个元素(返回Set(1,2,3,5,6))
nums – List(1,2) 移除多个元素(返回Set(3))
nums & Set(1,3,5,7) 获取两个集的交集(返回Set(1,3))
nums.size 返回集的大小(返回3)
nums.contains(3) 检查是否包含(此处返回true)
import scala.collection.mutable 让可变集易于访问
val words = mutable.Set.empty[String] 创建一个空的可变集(words.toString将返回Set())
words += “the” 添加一个元素(words.toString将返回Set(the))
words -= “the” 移除一个元素,如果这个元素存在(words.toString将返回Set())
words ++= List(“do”,”re”,”mi”) 添加多个元素(words.toString将返回Set(do,re,mi))
words –= List(“do”,”re”) 移除多个元素(words.toString将返回Set(mi))
words.clear 移除所有元素(words.toString将返回Set())

常用的映射操作

操作 效果
val nums = Map(“i” -> 1, “ii” -> 2) 创建一个不可变映射(nums.toString返回Map(i -> 1, ii -> 2))
nums + (“vi” -> 6) 添加一个条目(返回Map(i -> 1, ii -> 2, vi -> 6))
nums - “ii” 移除一个条目(返回Map(i -> 1))
nums ++ List(“iii” -> 3, “v” -> 5) 添加多个条目(返回Map(i -> 1, ii -> 2, iii -> 3, v -> 5))
nums – List(“i”,”ii”) 移除多个条目(返回Map())
nums.size 返回映射的大小(返回2)
nums.contains(“ii”) 检查是否包含(返回true)
nums(“ii”) 获取指定键的值(返回2)
nums.keys 返回所有键(返回字符串”i”和”ii”的Iterable)
nums.keySet 以集的形式返回所有的键(返回Set(i,ii))
nums.values 返回所有的值(返回整数1和2的Iterable)
nums.isEmpty 表示映射是否为空
import scala.collection.mutable 让可变集合易于访问
val words = mutable.Map.empty[String,Int] 创建一个空的可变映射
words += (“one” -> 1, “two” -> 2, “three” -> 3) 添加一个从”one”到1的映射条目
words -= “one” 移除一个映射条目,如果存在
words ++= List(“one” -> 1, “two” -> 2, “three” -> 3) 添加多个条目
words –= List(“one”,”two”) 移除多个条目

序列

操作 说明
索引和长度的操作 apply、isDefinedAt、length、indices,及lengthCompare 序列的apply操作用于索引访问;因此,Seq[T]类型的序列也是一个以单个Int(索引下标)为参数、返回值类型为T的偏函数。换言之,Seq[T]继承自Partial Function[Int, T]。序列各元素的索引下标从0开始计数,最大索引下标为序列长度减一。序列的length方法是collection的size方法的别名。lengthCompare方法可以比较两个序列的长度,即便其中一个序列长度无限也可以处理。
索引检索操作(indexOf、lastIndexOf、indexofSlice、lastIndexOfSlice、indexWhere、lastIndexWhere、segmentLength、prefixLength) 用于返回等于给定值或满足某个谓词的元素的索引。
加法运算(+:,:+,padTo) 用于在序列的前面或者后面添加一个元素并作为新序列返回。
更新操作(updated,patch) 用于替换原序列的某些元素并作为一个新序列返回。
排序操作(sorted, sortWith, sortBy) 根据不同的条件对序列元素进行排序。
反转操作(reverse, reverseIterator, reverseMap) 用于将序列中的元素以相反的顺序排列。
比较(startsWith, endsWith, contains, containsSlice, corresponds) 用于对两个序列进行比较,或者在序列中查找某个元素。
多集操作(intersect, diff, union, distinct) 用于对两个序列中的元素进行类似集合的操作,或者删除重复元素。

Seq类的操作

WHAT IT IS WHAT IT DOES
索引和长度 ———————————–
xs(i) (或者写作xs apply i)。xs的第i个元素
xs isDefinedAt i 测试xs.indices中是否包含i。
xs.length 序列的长度(同size)。
xs.lengthCompare ys 如果xs的长度小于ys的长度,则返回-1。如果xs的长度大于ys的长度,则返回+1,如果它们长度相等,则返回0。即使其中一个序列是无限的,也可以使用此方法。
xs.indices xs的索引范围,从0到xs.length - 1。
索引搜索 ———————————–
xs indexOf x 返回序列xs中等于x的第一个元素的索引(存在多种变体)。
xs lastIndexOf x 返回序列xs中等于x的最后一个元素的索引(存在多种变体)。
xs indexOfSlice ys 查找子序列ys,返回xs中匹配的第一个索引。
xs indexOfSlice ys 查找子序列ys,返回xs中匹配的倒数一个索引。
xs indexWhere p xs序列中满足p的第一个元素。(有多种形式)
xs segmentLength (p, i) xs中,从xs(i)开始并满足条件p的元素的最长连续片段的长度。
xs prefixLength p xs序列中满足p条件的先头元素的最大个数。
加法 ———————————–
x +: xs 由序列xs的前方添加x所得的新序列。
xs :+ x 由序列xs的后方追加x所得的新序列。
xs padTo (len, x) 在xs后方追加x,直到长度达到len后得到的序列。
更新 ———————————–
xs patch (i, ys, r) 将xs中第i个元素开始的r个元素,替换为ys所得的序列。
xs updated (i, x) 将xs中第i个元素替换为x后所得的xs的副本。
xs(i) = x (或写作 xs.update(i, x),仅适用于可变序列)将xs序列中第i个元素修改为x。
排序 ———————————–
xs.sorted 通过使用xs中元素类型的标准顺序,将xs元素进行排序后得到的新序列。
xs sortWith lt 将lt作为比较操作,并以此将xs中的元素进行排序后得到的新序列。
xs sortBy f 将序列xs的元素进行排序后得到的新序列。参与比较的两个元素各自经f函数映射后得到一个结果,通过比较它们的结果来进行排序。
反转 ———————————–
xs.reverse 与xs序列元素顺序相反的一个新序列。
xs.reverseIterator 产生序列xs中元素的反序迭代器。
xs reverseMap f 以xs的相反顺序,通过f映射xs序列中的元素得到的新序列。
比较 ———————————–
xs startsWith ys 测试序列xs是否以序列ys开头(存在多种形式)。
xs endsWith ys 测试序列xs是否以序列ys结束(存在多种形式)。
xs contains x 测试xs序列中是否存在一个与x相等的元素。
xs containsSlice ys 测试xs序列中是否存在一个与ys相同的连续子序列。
(xs corresponds ys)(p) 测试序列xs与序列ys中对应的元素是否满足二元的判断式p。
多集操作 ———————————–
xs intersect ys 序列xs和ys的交集,并保留序列xs中的顺序。
xs diff ys 序列xs和ys的差集,并保留序列xs中的顺序。
xs union ys 并集;同xs ++ ys。
xs.distinct 不含重复元素的xs的子序列。

Buffer类的操作

WHAT IT IS WHAT IT DOES
加法: ———————————–
buf += x 将元素x追加到buffer,并将buf自身作为结果返回。
buf += (x, y, z) 将给定的元素追加到buffer。
buf ++= xs 将xs中的所有元素追加到buffer。
x +=: buf 将元素x添加到buffer的前方。
xs ++=: buf 将xs中的所有元素都添加到buffer的前方。
buf insert (i, x) 将元素x插入到buffer中索引为i的位置。
buf insertAll (i, xs) 将xs的所有元素都插入到buffer中索引为i的位置。
移除: ———————————–
buf -= x 将元素x从buffer中移除。
buf remove i 将buffer中索引为i的元素移除。
buf remove (i, n) 将buffer中从索引i开始的n个元素移除。
buf trimStart n 移除buffer中的前n个元素。
buf trimEnd n 移除buffer中的后n个元素。
buf.clear() 移除buffer中的所有元素。
克隆: ———————————–
buf.clone 与buf具有相同元素的新buffer。

Traversable对象的操作

WHAT IT IS WHAT IT DOES
抽象方法:
xs foreach f 对xs中的每一个元素执行函数f
加运算(Addition):
xs ++ ys 生成一个由xs和ys中的元素组成容器。ys是一个TraversableOnce容器,即Taversable类型或迭代器。
Maps:
xs map f 通过函数xs中的每一个元素调用函数f来生成一个容器。
xs flatMap f 通过对容器xs中的每一个元素调用作为容器的值函数f,在把所得的结果连接起来作为一个新的容器。
xs collect f 通过对每个xs中的符合定义的元素调用偏函数f,并把结果收集起来生成一个集合。
转换(Conversions):
xs.toArray 把容器转换为一个数组
xs.toList 把容器转换为一个list
xs.toIterable 把容器转换为一个迭代器。
xs.toSeq 把容器转换为一个序列
xs.toIndexedSeq 把容器转换为一个索引序列
xs.toStream 把容器转换为一个延迟计算的流。
xs.toSet 把容器转换为一个集合(Set)。
xs.toMap 把由键/值对组成的容器转换为一个映射表(map)。如果该容器并不是以键/值对作为元素的,那么调用这个操作将会导致一个静态类型的错误。
拷贝(Copying):
xs copyToBuffer buf 把容器的所有元素拷贝到buf缓冲区。
xs copyToArray(arr, s, n) 拷贝最多n个元素到数组arr的坐标s处。参数s,n是可选项。
大小判断(Size info):
xs.isEmpty 测试容器是否为空。
xs.nonEmpty 测试容器是否包含元素。
xs.size 计算容器内元素的个数。
xs.hasDefiniteSize 如果xs的大小是有限的,则为true。
元素检索(Element Retrieval):
xs.head 返回容器内第一个元素(或其他元素,若当前的容器无序)。
xs.headOption xs选项值中的第一个元素,若xs为空则为None。
xs.last 返回容器的最后一个元素(或某个元素,如果当前的容器无序的话)。
xs.lastOption xs选项值中的最后一个元素,如果xs为空则为None。
xs find p 查找xs中满足p条件的元素,若存在则返回第一个元素;若不存在,则为空。
子容器(Subcollection):
xs.tail 返回由除了xs.head外的其余部分。
xs.init 返回除xs.last外的其余部分。
xs slice (from, to) 返回由xs的一个片段索引中的元素组成的容器(从from到to,但不包括to)。
xs take n 由xs的第一个到第n个元素(或当xs无序时任意的n个元素)组成的容器。
xs drop n 由除了xs take n以外的元素组成的容器。
xs takeWhile p 容器xs中最长能够满足断言p的前缀。
xs dropWhile p 容器xs中除了xs takeWhile p以外的全部元素。
xs filter p 由xs中满足条件p的元素组成的容器。
xs withFilter p 这个容器是一个不太严格的过滤器。子容器调用map,flatMap,foreach和withFilter只适用于xs中那些的满足条件p的元素。
xs filterNot p 由xs中不满足条件p的元素组成的容器。
拆分(Subdivision):
xs splitAt n 把xs从指定位置的拆分成两个容器(xs take n和xs drop n)。
xs span p 根据一个断言p将xs拆分为两个容器(xs takeWhile p, xs.dropWhile p)。
xs partition p 把xs分割为两个容器,符合断言p的元素赋给一个容器,其余的赋给另一个(xs filter p, xs.filterNot p)。
xs groupBy f 根据判别函数f把xs拆分一个到容器(collection)的map中。
条件元素(Element Conditions):
xs forall p 返回一个布尔值表示用于表示断言p是否适用xs中的所有元素。
xs exists p 返回一个布尔值判断xs中是否有部分元素满足断言p。
xs count p 返回xs中符合断言p条件的元素个数。
折叠(Fold):
(z /: xs)(op) 在xs中,对由z开始从左到右的连续元素应用二进制运算op。
(xs :\ z)(op) 在xs中,对由z开始从右到左的连续元素应用二进制运算op
xs.foldLeft(z)(op) 与(z /: xs)(op)相同。
xs.foldRight(z)(op) 与 (xs :\ z)(op)相同。
xs reduceLeft op 非空容器xs中的连续元素从左至右调用二进制运算op。
xs reduceRight op 非空容器xs中的连续元素从右至左调用二进制运算op。
特殊折叠(Specific Fold):
xs.sum 返回容器xs中数字元素的和。
xs.product xs返回容器xs中数字元素的积。
xs.min 容器xs中有序元素值中的最小值。
xs.max 容器xs中有序元素值中的最大值。
字符串(String):
xs addString (b, start, sep, end) 把一个字符串加到StringBuilder对象b中,该字符串显示为将xs中所有元素用分隔符sep连接起来并封装在start和end之间。其中start,end和sep都是可选的。
xs mkString (start, sep, end) 把容器xs转换为一个字符串,该字符串显示为将xs中所有元素用分隔符sep连接起来并封装在start和end之间。其中start,end和sep都是可选的。
xs.stringPrefix 返回一个字符串,该字符串是以容器名开头的xs.toString。
视图(View):
xs.view 通过容器xs生成一个视图。
xs view (from, to) 生成一个表示在指定索引范围内的xs元素的视图。

Trait Iterable操作

WHAT IT IS WHAT IT DOES
抽象方法:
xs.iterator xs 迭代器生成的每一个元素,以相同的顺序就像foreach一样遍历元素。
其他迭代器:
xs grouped size 一个迭代器生成一个固定大小的容器(collection)块。
xs sliding size 一个迭代器生成一个固定大小的滑动窗口作为容器(collection)的元素。
子容器(Subcollection):
xs takeRight n 一个容器(collection)由xs的最后n个元素组成(或,若定义的元素是无序,则由任意的n个元素组成)。
xs dropRight n 一个容器(collection)由除了xs 被取走的(执行过takeRight ()方法)n个元素外的其余元素组成。
拉链方法(Zippers):
xs zip ys 把一对容器 xs和ys的包含的元素合成到一个iterabale。
xs zipAll (ys, x, y) 一对容器 xs 和ys的相应的元素合并到一个iterable ,实现方式是通过附加的元素x或y,把短的序列被延展到相对更长的一个上。
xs.zip WithIndex 把一对容器xs和它的序列,所包含的元素组成一个iterable 。
比对:
xs sameElements ys 测试 xs 和 ys 是否以相同的顺序包含相同的元素。

> 最后更新于2018.7.26