今天来学习一下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学习内容

05-08 08:20