Scala | Array和List中通用且重要的方法

Array和List中通用且重要的方法

1.max
2.min
3.sum
4.take
5.takeRight
6.drop
7.dropRight
8.head
9.last
10.union 并集
11.intersect 交集
12.diff 差集
13.distinct
14.mkString
15.reverse
16.filter
17.map
18.sortBy
19.reduce
20.flatMap
21.groupBy

重点掌握:① filter ② map ③sortBy ④reduce ⑤flatMap ⑥groupBy

object Demo06 {
     
  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet
  
  //创建一个定长List并赋值
  val l1=List(1,2,3,4)                            //> l1  : List[Int] = List(1, 2, 3, 4)
  //创建一个变长List并赋值
  val l2=scala.collection.mutable.ListBuffer(1,2,3,4)
                                                  //> l2  : scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4)
  
  //通过下标操作List
  l1.apply(0)                                     //> res0: Int = 1
  l1(0)                                           //> res1: Int = 1
  
  //Array和List之间可以相互转换
  val a1=l1.toArray                               //> a1  : Array[Int] = Array(1, 2, 3, 4)
  val l3=a1.toList                                //> l3  : List[Int] = List(1, 2, 3, 4)
  
  //map方法。映射方法
  //根据传入的匿名函数,将元素从一个形式映射为另外一个形式
  //最后将结果返回到新的集合中
  val r1=l1.map {
      num => num*2 }                  //> r1  : List[Int] = List(2, 4, 6, 8)
  
  val r2=l1.map {
      num => num.toString }           //> r2  : List[String] = List(1, 2, 3, 4)
  
  //练习1:对l4做映射,要求返回的新的集合 List("tom","rose","jim")
  val l4=List("tom M 23","rose F 18","jim M 30")  //> l4  : List[String] = List(tom M 23, rose F 18, jim M 30)
  
  val r3=l4.map {
      line => line.split(" ")(0) }    //> r3  : List[String] = List(tom, rose, jim)
  
  //练习2:计算出l4中所有人年龄的均值  List(23,18,30)
  val r4=l4.map {
      line => line.split(" ")(2).toInt }
                                                  //> r4  : List[Int] = List(23, 18, 30)
  val r5=r4.sum/r4.length                         //> r5  : Int = 23
  
  //练习3:计算出l4中男性年龄的极差
  val r6=l4.filter {
      line => line.split(" ")(1).equals("M") }
  				 .map {
      line => line.split(" ")(2).toInt }
                                                  //> r6  : List[Int] = List(23, 30)
  val r7=r6.max-r6.min                            //> r7  : Int = 7
  
  val l5=List(2,1,3,5,4)                          //> l5  : List[Int] = List(2, 1, 3, 5, 4)
  
  //sortBy 排序方法:按照指定的匿名函数规则实现排序
  //并将排序后的结果返回到新的集合中
  //按数字做升序排序
  val r8=l5.sortBy {
      num => num }                 //> r8  : List[Int] = List(1, 2, 3, 4, 5)
  
  //降序排序
  val r9=l5.sortBy {
      num => num }.reverse         //> r9  : List[Int] = List(5, 4, 3, 2, 1)
  //注意:负号前需要加空格
  val r10=l5.sortBy {
      num => -num }               //> r10  : List[Int] = List(5, 4, 3, 2, 1)
  
  //练习4:操作l6,返回按年龄做升序排序的结果
  val l6=List("tom 23","rose 18","jim 30","jary 25")
                                                  //> l6  : List[String] = List(tom 23, rose 18, jim 30, jary 25)
  
  val r11=l6.sortBy {
      line => line.split(" ")(1).toInt }
                                                  //> r11  : List[String] = List(rose 18, tom 23, jary 25, jim 30)
  //练习5:计算出l6中年龄最大的前两个人的年龄均值
  val r12=l6.sortBy {
      line => -line.split(" ")(1).toInt }
  					.take(2)
  					.map {
      line => line.split(" ")(1).toInt }
                                                  //> r12  : List[Int] = List(30, 25)
  val r13=r12.sum/r12.length                      //> r13  : Int = 27
  
  //reduce:归约方法
  val l7=List(1,2,3,4,5)                          //> l7  : List[Int] = List(1, 2, 3, 4, 5)
  //reduce方法底层的实现逻辑:
  //①a=1 b=2   a+b=3
  //②a=3 b=3   a+b=6
  //③a=6 b=4   a+b=10
  //...
  val r14=l7.reduce{
     (a,b)=>a+b}                   //> r14  : Int = 15
  
  //练习6:通过reduce求出l7这组数据阶乘的结果
  val r15=l7.reduce{
     (a,b)=>a*b}                   //> r15  : Int = 120
  
  //练习7:通过reduce返回l8中最大值。不能使用max方法
  val l8=List(2,1,3,5,4)                          //> l8  : List[Int] = List(2, 1, 3, 5, 4)
  
  //①a=2 b=1  result=2
  //②a=2 b=3  result=3
  //③a=3 b=5  result=5
  //④a=5 b=4  result=5
  val r16=l8.reduce{
     (a,b)=>if(a>b)a else b}       //> r16  : Int = 5
  
  //flatMap:扁平化映射。一般用于读取文件后,获取行中的单独数据
  val l9=List("hello world","hello scala")        //> l9  : List[String] = List(hello world, hello scala)
  val r17=l9.flatMap {
      line => line.split(" ") }  //> r17  : List[String] = List(hello, world, hello, scala)
  
  //groupBy:分组,按照指定的分组条件进行分组,返回一个Map
  val l10=List("hello","world","hello","world","hello")
                                                  //> l10  : List[String] = List(hello, world, hello, world, hello)
  
  val r18=l10.groupBy {
      word => word }            //> r18  : scala.collection.immutable.Map[String,List[String]] = Map(world -> L
                                                  //| ist(world, world), hello -> List(hello, hello, hello))
  
  
}

你可能感兴趣的:(#,Scala语言,大数据,scala)