大数据系列修炼-Scala课程32
来源:互联网 发布:淘宝首页模板制作 编辑:程序博客网 时间:2024/05/17 03:46
大数据系列修炼-Scala课程32
核心内容:
1、List的基本操作实战
2、基于模式匹配的List排序算法实现
1、List的基本操作实战
声明List的三种方式:
1>常见的声明方式:val data = ListInt
2>::(2个冒号)+Nil的方式:val data2 = 10::(20::30::15::Nil)
从整体结构上而言:Scala中的List其实只是由两部分构成:一部分是head部分,即Scala中的第一个元素;
一部分是tail部分,即List中除第一个元素以外的的其它元素的集合
3>声明List的第三种方式:与模式进行结合,通过这种方式可以很容易的获取到List集合中的内容或前几个元素
实例程序:
object App8{ def main(args:Array[String]):Unit= { val arr1 = Array[Int](10,20,30,5) //声明List的第一种方式: println("List的第一种方式:") val bigData = List[String]("Hadoop","Spark") //本质上是调用伴生对象的apply方法 val data = List[Int](10,20,30,15) //声明List的第二种方式: println("---------------------") println("List的第二种方式:") val bigData2 = "Hadoop"::("Spark"::Nil) //List[String]类型 val data2 = 10::(20::30::15::Nil) //List[Int]类型 println(bigData2.head) //List中的首元素 println(bigData2.tail) //List中除第一个元素外其它元素的集合 println(bigData2.tail.head) //List中第二部分的首元素 println("---------------------") println(data2.head) println(data2.tail) //输出的是一个集合 println(data2.tail.head) //定义一个空元素的集合 val arr2 = Nil println(arr2.isEmpty) //判断List列表是否为空 //声明List的第三种方式:利用模式的匹配 val List(a,b) = bigData println("a:"+a +"b:"+b) val List(a2,b2,c,d) = data println("__________------------__________") println(a2) println(b2) println(c) println(d) val x::y::rest = data2 println("------_______-------") println(x) println(y) println(rest) //输出一个集合 //List与模式匹配的结合 println("模式匹配:") def fun(list:Any) = list match { case x::y::Nil => println("x:"+x+"\t"+"y:"+y) case _ => println("nothing") } fun(List(20,10)) } }
运行结果:
List的第一种方式:---------------------List的第二种方式:HadoopList(Spark)Spark---------------------10List(20, 30, 15)20truea:Hadoopb:Spark__________------------__________10203015------_______-------1020List(30, 15)模式匹配:x:20 y:10
2、基于模式匹配的List排序算法实现1、由于我们可以用模式将List中的内容给提取出来,因此List可以非常方便的与模式匹配进行结合。
实例程序:
object App { def main(args:Array[String]):Unit= //main函数的形式参数是一个字符串数组 { //使用List与模式匹配进行结合来对List进行排序 val DataShuf = List(6,3,5,50,20,15) println(DataShuf) //List(6, 3, 5, 50, 20, 15) println(DataShuf.head) println(DataShuf.tail) //这个算法我还是没有太懂 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) } //模式匹配之后的运行结果: val aa = sortList(DataShuf)//List(3, 5, 6, 15, 20, 50) println(aa) }}
如有问题,欢迎留言指正!
1 0
- 大数据系列修炼-Scala课程32
- 大数据系列修炼-Scala课程01
- 大数据系列修炼-Scala课程02
- 大数据系列修炼-Scala课程03
- 大数据系列修炼-Scala课程04
- 大数据系列修炼-Scala课程05
- 大数据系列修炼-Scala课程06
- 大数据系列修炼-Scala课程07
- 大数据系列修炼-Scala课程08
- 大数据系列修炼-Scala课程09
- 大数据系列修炼-Scala课程10
- 大数据系列修炼-Scala课程11
- 大数据系列修炼-Scala课程12
- 大数据系列修炼-Scala课程15
- 大数据系列修炼-Scala课程17
- 大数据系列修炼-Scala课程18
- 大数据系列修炼-Scala课程19
- 大数据系列修炼-Scala课程20
- windows环境下ruby的安装
- 大数据系列修炼-Scala课程31
- bzoj 1925: [Sdoi2010]地精部落(dp)
- Android逆向破解之Mointor查看目标日志
- Android中的Shape使用总结
- 大数据系列修炼-Scala课程32
- Android调用系统相机拍照像素太低以及内存溢出问题
- 文件过滤器
- Strom中IBasicBolt与IRichBolt的区别
- POJ1004
- android AdapterViewFlipper的简单使用——主要参考《android疯狂讲义》
- 概率论 —— 分析计算机系统和网络的可靠性和通用性
- linux下首次安装软件--lrzsz(上传下载)
- Android中的Selector的用法