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

最新文章

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

热门文章

  1. Activity(活动)
  2. 分析params_s方法
  3. UVALive - 3266 (贪心) 田忌赛马
  4. OpenSource.SerializationLibrary
  5. Python-多进程VS多线程
  6. Json数据处理协议与办法
  7. BZOJ3669 膜法森林 - LCT
  8. padding属性
  9. linux 常用命令(三)ssh
  10. 论坛:Html代码生成器&gt;&gt;FCKeditor的使用