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