32.List的基本操作實戰與基於模式匹配的List排序算法實現

一、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講 由王家林老師講解



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章