第32讲:List的基本操作实战与基于模式匹配的List排序算法实现
2016-02-14 20:05
393 查看
package com.dt.scala.dataset object HelloList { def main(args: Array[String]): Unit = { //定义List,直接使用applay方法 val bigData = List("Spark","Hadoop") val data = List(1,2,3) //使用::定义列表 val bigData_core = "Spark"::"Hadoop"::Nil //:: Nil不能省略,"Spark"::"Hadoop" 这个语法是错误的 //Nil是空列表,并且::是右元素的方法,例如"Hadoop"::Nil :: 是Nil的方法 //等同于 val bigData_core2 = Nil.::("Hadoop") val data_Int = 1::2::3::Nil // 两个列表合并,使用:::方法 val data_union = data ::: data_Int //判断列表是否为空 data.isEmpty //取列表的头部 data.head //对于List来说,第一个元素称之为head,其余的所有元素成为tail data.tail.head //提前List中的元素 val List(a,b) = bigData //a="Spark" , b="Hadoop" println("a = "+a+" b = "+b) // 如果List中有多个元素,可以使用如下方式提取 val first::second::rest = data //rest代表剩余的List,返回的类型是List println("first:"+first+" ==== "+"second:"+second+" ==== "+"rest:"+rest) //first:1 ==== second:2 ==== rest:List(3) //使用模式匹配对List进行排序操作 val shuffleData = List(9,3,2,10,3,34,1) def compute(data : Int,dataSet : List[Int]) : List[Int] = dataSet match { case List() => List(data) //如果dataSet为空,那么返回List(data) case head :: tail => { //如果dataSet不为空 if (data <= head) // data和第一个元素比较如果<=head则放到List的头部 data :: dataSet else head :: compute(data,tail) //否则嵌套调用compute } } println(compute(10, shuffleData)) def sortList(data : List[Int]) : List[Int] = data match { case List() => List() case head :: tail => compute(head,sortList(tail)) } println(sortList(shuffleData)) } }
相关文章推荐
- PHP8新特性之match表达式
- Windows下Scala环境搭建
- C#中Ilist与list的区别小结
- C#中IList<T>与List<T>的区别深入解析
- C#对list列表进行随机排序的方法
- Vc++ 控件List Control用法总结
- C++实现的泛型List类分享
- js正则表达exec与match的区别说明
- C#使用IComparer自定义List类实现排序的方法
- C# Datagridview绑定List方法代码
- javascript radio list的实现细节(多浏览器兼容)
- c++ STL容器总结之:vertor与list的应用
- Windows7下安装Scala 2.9.2教程
- java实现List中对象排序的方法
- 大家注意vector, list, set, map成员函数erase
- ASP.NET―001:GridView绑定List、页面返回值具体实现
- List all the Databases on a SQL Server
- Js&Vbs正则表达式替换重复的字符
- 限制文本框中只能输入实数或整数,其它字符无效,有劳大家了!
- js Map List 遍历使用示例