今天来学习一下list的基本操作及基于模式匹配的排序操作
让我们从代码出发
val bigData = List("hadoop","spark")
val data = List(1,2,3)
首先是定义一个列表,上面代码中调用apply方法,省去了new关键字,并且编译器会自动判断类型
val bigData_Core = "hadoop" :: ("spark" :: Nil)
val data_Int = 1::2::3::Nil
每一个list都由head部分和tail部分通过::结合而成,head就是第一个元素,tail就是除却第一个元素后剩下元素组成的列表。空列表由Nil表示。
val List(a,b) = bigData
println("a:" +a +"===" + "b:" +b)
val x::y::rest = data
println("x:" + x + "===" + "y:" +y + "===" + rest)
让我们看下怎样提取一个列表中的元素。上面代码中,我们通这定义一个列表,将另一个列表中的元素给了a和b,这样,我们就得到了元素的值。当然我们也可以通过结合的方式获得值。rest是由剩下的元素组成的list
val shuffledData = List(6,3,5,6,2,9,1)
println(sortList(shuffledData))
def sortList(list:List[Int]):List[Int] = list match{
case List() => List()
case head::tail => compute (head,sortList(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)//排序算法
}
以上一段代码就是列表的基于模式匹配的排序算法。首先定义compute,将列表中的元素从空列表开始,挨个从后往前进行大小比较并按顺序放入列表。
分享下更多的scala资源吧:
百度云盘:http://pan.baidu.com/s/1gd7133t
微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416
360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)
信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
关注微信账号,获取更多关于scala学习内容