第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学习内容
第32讲:List的基本操作实战与基于模式匹配的List排序算法实现的更多相关文章
- Spark RDD/Core 编程 API入门系列 之rdd实战(rdd基本操作实战及transformation和action流程图)(源码)(三)
本博文的主要内容是: 1.rdd基本操作实战 2.transformation和action流程图 3.典型的transformation和action RDD有3种操作: 1. Trandform ...
- 第32讲 UI组件之 时间日期控件DatePicker和TimePicker
第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置, Time ...
- Go 语言入门教程,共32讲,6小时(已完结)
Go语言入门教程,共32讲,6小时(完结) 在B站:https://www.bilibili.com/video/BV1fD4y1m7TD/
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
- ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法
一.前言 在非静态页面的项目开发中,必定会涉及到对于数据库的访问,最开始呢,我们使用 Ado.Net,通过编写 SQL 帮助类帮我们实现对于数据库的快速访问,后来,ORM(Object Relatio ...
- (排序算法整理)NEFU 30/32
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/caihongshijie6/article/details/26165093 事实上, ...
- R语言实战实现基于用户的简单的推荐系统(数量较少)
R语言实战实现基于用户的简单的推荐系统(数量较少) a<-c(1,1,1,1,2,2,2,2,3,3,3,4,4,4,5,5,5,5,6,6,7,7) b<-c(1,2,3,4,2,3,4 ...
- 【书籍连载】《STM32 HAL 库开发实战指南—基于F7》-第一章
从今天起,每天开始连载一章<STM32 HAL 库开发实战指南—基于F7>.欢迎各位阅读.点评.学习. 第1章 如何使用本书 1.1 本书的参考资料 本书参考资料为:<STM32 ...
- html5--6-68 实战前的准备工作:了解HTML5大纲算法
html5--6-68 实战前的准备工作:了解HTML5大纲算法 学习要点 了解HTML5大纲算法 在html5中有一个很重要的概念,叫做HTML5大纲算法(HTML5 Outliner),它的用途为 ...
随机推荐
- 第一个android ijkplayer播放器
创建一个ijkplayer的播放器项目,需要三步设置: 一.在activity_main.xml中添加播放器标签 <com.smallart.myapplication.media.IjkVid ...
- springboot 项目添加jaeger调用链监控
1.添加maven依赖<dependency> <groupId>io.opentracing.contrib</groupId> <artifactId&g ...
- idea快捷键及快捷方法(待完善)
一.快捷键 alt+insert 插入get.set.构造函数等 ctrl+shift+alt+g 生成注释文档 ctrl+shift+alt+z 移除注释文档 Ctrl + Alt ...
- Database.SQL.join
inner join 和 outer join的区别 http://en.wikipedia.org/wiki/Join_%28SQL%29
- Fedora : multilib version problems found
摘自:https://smjrifle.net/fedora-fix-multilib-version-problems/ This error was due to duplicate packag ...
- 爬取掌阅app免费电子书数据
主要介绍如何抓取app数据及抓包工具的使用,能看到这相信你已经有爬虫基础了 编不下去了,主要是我懒,直接开干吧! 一.使用环境和工具 windows + python3 + Jsonpath + Ch ...
- swift 判断真机还是模拟器
if Platform.isSimulator { // Do one thing print("isSimulator") } else { } struct Platform ...
- nginx指令中的优化(配置文件)
nginx指令中的优化(配置文件)worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数.worker_cpu_affinity 00000001 0000 ...
- maven项目springmvc导包失败-JsonProcessingException
昨天搞了好久还是没有解决,今天把springaop小demo敲一遍时,启动tomcat时报错: org.springframework.beans.factory.BeanCreationExcept ...
- vs2017控制python版本
在python环境下拉菜单里面任意一个点右键,选择打开此处的命令提示符,就能把cmd开启的python版本切换到这个版本.