大数据系列修炼-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
原创粉丝点击