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,因此他們可以應用到各種可枚舉的集合類上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM