scala编程第16章学习笔记(1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

scala编程第16章学习笔记(1)
List列表的基本操作
head⽅法获得列表的第⼀个元素
tail⽅法获得列表除第⼀个元素之外的其它元素
isEmpty:判断列表是否为空,空的话返回真
last:获得列表最后⼀个元素
init:获得除最后⼀个元素之外的元素
reverse:反转列表
前缀与后缀:drop、take、splitAt
xs take n 返回xs列表的前n个元素,如果n⼤于xs.length,则返回整个xs。

xs drop n 返回xs列表除前n个元素之外的所有元素,如果n⼤于xs.length,则返回空列表。

splitAt操作在指定位置拆分列表,并返回对偶列表。

xs splitAt n等价于(xs take n, xs drop n)
例⼦如下:
scala> List(1, 2, 3, 4, 5) take 2
res2: List[Int] = List(1, 2)
scala> List(1, 2, 3, 4, 5) drop 2
res3: List[Int] = List(3, 4, 5)
scala> List(1, 2, 3, 4, 5) splitAt 2
res4: (List[Int], List[Int]) = (List(1, 2),List(3, 4, 5))
元素选择:apply⽅法和indices⽅法
apply⽅法实现了随机元素的选择,与其它类型⼀样,当对象出现在应该是⽅法调⽤的函数位置上时,就会隐式地插⼊apply⽅法scala> val abcde=List('a' ,'b', 'c', 'd', 'e')
abcde: List[Char] = List(a, b, c, d, e)
scala> abcde apply 2
res7: Char = c
scala> abcde(2)
res8: Char = c
xs apply n 等价于(xs drop n).head
indices⽅法可以返回指定列表的所有有效索引值组成的类表:
scala> abcde.indices
res9: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)
啮合列表:zip
zip操作可以把两个列表组成⼀个对偶列表:
scala> abcde.indices zip abcde
res10: scala.collection.immutable.IndexedSeq[(Int, Char)] = Vector((0,a), (1,b),(2,c), (3,d), (4,e))
如果两个列表的长度不⼀致,那么任何不能匹配的元素将被丢掉:
scala> abcde zip List(1, 2, 3)
res11: List[(Char, Int)] = List((a,1), (b,2), (c,3))
zipWithIndex把列表元素与索引值啮合在⼀起
scala> abcde.zipWithIndex
res12: List[(Char, Int)] = List((a,0), (b,1), (c,2), (d,3), (e,4))
显⽰列表:toString⽅法和mkString⽅法
toString操作返回列表的标准字符串表达形式:
scala> abcde.toString
res13: String = List(a, b, c, d, e)
如果需要其他表达形式,可以使⽤mkString⽅法。

xs mkString(pre, sep, post)
其中pre是需要在显⽰的元素之前的前缀字符串,sep为两个元素之间的分割字符串,post为显⽰在最后⾯的后缀字符串。

xs.mkString 等价于 xs mkString("", sep, "")
xs.mkString 等价于 xs mkString ""
scala> abcde mkString ("[", ",", "]")
res15: String = [a,b,c,d,e]
scala> abcde mkString ""
res17: String = abcde
scala> abcde.mkString
res19: String = abcde
scala> abcde mkString ("List(", ", ", ")")
res20: String = List(a, b, c, d, e)
mkString⽅法还有名为addString的变体,它可以把构建好的字符串添加到StringBuilder对象中,⽽不是作为结果返回:scala> val buf = new StringBuilder
buf: StringBuilder =
scala> abcde addString (buf, "(", ";", ")")
res21: StringBuilder = (a;b;c;d;e)
mkString和addString⽅法都继承⾃List的超特质Iterable,因此他们可以应⽤到各种可枚举的集合类上。

相关文档
最新文档