一、List的基本操作實戰
package ce.scala.pp
object HelloList {
def main(args: Array[String]): Unit = {
//7
val bigdata = List("Hadoop", "Spark") //調用了其伴生對象的apply() 把鼠標放在bigData上,顯示 val bigData:List[String]
val data = List(1,2,3) //把鼠標放在bigData上,顯示 val data:List[Int]
//List內部元素的類型要一致,其內部也可以有List、Map
val bigData_Core = "Hadoop" :: ("Spark" :: Nil) //::右結合性,從右往左結合
val bigData_Int = 1 :: 2 :: 3 :: Nil
//List從結構上說,只由兩部分構成,即head(第一個元素)和tail(除了第一個元素外的剩餘元素)
println(data.isEmpty) //判斷這個列表是否有元素
println(data.head) //整個List的第一個元素
println(data.tail.head) //除了head外的剩餘元素的第一個元素,即List的第二個元素
}
}
輸出:
false
1
2
val bigdata = List("Hadoop", "Spark")
val data = List(1,2,3)
val List(a, b) = bigdata //把bigdata的內容賦值給List(a,b)
println(a + " " + b)
val x :: y :: rest = data //若不知道這個List有多少個元素,就想獲取前2個元素,就用這種方式
println(x + " " + y + " " + rest)
輸出:
Hadoop Spark
1 2 List(3)
二、基於模式匹配的List排序算法實現(List也有提取器)
val shuffledData = List(3,6,2,9,1)
println(sortedList(shuffledData))
def sortedList(list : List[Int]) : List[Int] = list match{
case List() => List()
case head :: tail => compute(head,sortedList(tail)) //遞歸調用
}
def compute(data : Int, dataSet: List[Int]) : List[Int] = dataSet match{
case List() => List(data)
case head :: tail => if (data <= head) data :: dataSet
else head :: compute(data,tail) //遞歸調用
}
輸出:List(1, 2, 3, 6, 9)
參考資料來源於大數據夢工廠 深入淺出scala 第32講 由王家林老師講解