1. 程式人生 > >scala的練習題

scala的練習題

 //建立一個List
    val lst0 = List(1,7,9,8,0,3,5,4,6,2)
    //將lst0中每個元素乘以10後生成一個新的集合
   解析 :       lst0.map(_*10)
    //將lst0中的偶數取出來生成一個新的集合
   解析 :      lst0.filter(_%2==0)
    //將lst0排序後生成一個新的集合
    解析 :                   lst0.sorted

    //反轉順序
     解析 :                  lst0.sorted.reverse

    //將lst0中的元素4個一組,型別為Iterator[List[Int]]
    解析 :                     lst0.grouped(4)

    //將Iterator轉換成List
    解析 
:                     res28.toList

    //將多個list壓扁成一個List
    解析 :                    res29.flatten  //ps 在scala命令模式中 可以用tab鍵自動提示

val lines = List("hello tom hello jerry", "hello jerry", "hello kitty")
    //先按空格切分,在壓平
   解析 :          lines.flatMap(_.split(" "))


    //平行計算求和
      
    //化簡:reduce
    //將非特定順序的二元操作應用到所有元素

    //安裝特點的順序

Array[Int] = Array(1, 2, 3, 4, 5)
    //摺疊:有初始值(無特定順序)
解析
: a.par.fold(10)(_+_)     //其中par是並行執行緒的標誌 。
        
    //摺疊:有初始值(有特定順序)

    //聚合
    val arr = List(List(1, 2, 3), List(3, 4, 5), List(2), List(0))

解析: arr.aggregate(0)(_+_.sum,_+_)   //第一個下劃線和folder下劃線是一樣的都是將前面括號的初始值進行相加


    val l1 = List(5,6,4,7)
    val l2 = List(1,2,3,4)
    //求並集
解析: l1.union(l2)

    //求交集
解析:l1.intersect(l2)

    //求差集

l1.diff(l2)
 解析
:   println(r3)


val lines = List("hello tom hello jerry", "hello jerry", "hello kitty")
lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2))
lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).map(t=>(t._1, t._2.size)).toList.sortBy(_._2).reverse