第32讲:List的基本操作实战与基于模式匹配的List排序算法实现
今天来学习一下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学习内容
最新文章
- Web安全开发之验证码设计不当引发的撞库问题
- C# 打印PDF文件之使用不同打印机打印所有页面或部分页面
- OS实验报告——作业调度模拟程序
- css知多少(8)——float上篇
- OCJP(1Z0-851) 模拟题分析(三)over
- [LintCode] Count and Say 计数和读法
- (转)【重磅】无监督学习生成式对抗网络突破,OpenAI 5大项目落地
- C++ 构造函数中调用虚函数
- SCROLLINFO结构体中fMask和nPage的理解
- ffmpeg ffprobe ffplay
- 第八十七节,html5+css3pc端固定布局,大纲算法,section和div,结构分析
- python中栈的单链表实现
- ROC AUC
- CentOS7的安装以及redis的下载安装和连接redis desktop manager出现的问题
- ACM__菜鸟之经典错误
- 在mysql中使用group by和order by取每个分组中日期最大一行数据
- [看门狗]基于Linux的嵌入式系统全程喂狗策略
- MySQL5.6 Waiting for Commit Lock
- eclipse 在Servers窗口创建一个Tomcat 6.0 Server失败
- vue如何下载报表