package cn.allengao.exercise
object Exercise {
def main(args: Array[String]): Unit = {
//創建一個List
val list0 = List(2, 5, 9, 6, 7, 1, 8, 3, 4, 0)
//將list0中的每個元素乘以2後生成一個新的集合
// “_” 表示將list0中的每一個元素取出。ctrl+alt+v 快捷鍵生成局部變量。ctrl+alt+L格式化快捷鍵
val list1 = list0.map(_ * 2)
//將list0中的偶數取出來生成一個新的集合
val list2 = list0.filter(_ % 2 == 0)
//將list0排序後生成一個新的集合
val list3 = list0.sorted
//反轉排序順序
val list4 = list3.reverse
//將list0中的元素4個一組,類型爲Iterator[List[Int]]
val itr = list0.grouped(4)
//將Iterator轉換成一個List
val list5 = itr.toList
//將多個List壓扁成一個List
val list6 = list5.flatten
//先按空格切分,再壓平
val lines = List("hello java ", "hello scala", "hello python")
// val words = lines.map(_.split(" "))
// val flatwords = words.flatten
val res = lines.flatMap(_.split(" "))
//並行計算求和
val arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
// val res1 = arr.sum
//和線程有關,會每個線程計算一部分,例如:((1+2+3+4)+(5+6+7+8)+(9+10))
val res1 = arr.par.sum
//按照特定的順序進行聚合
//第一個_代表拿取到的第一個元素,第二個_代表拿取到的第二個元素,內部循環,
// 下次再循環用上次的中間結果再加下一個值。(reduce調用了reduceLeft方法)
//(((1+2)+3)+4)+5...... 實現過程
val res2 = arr.reduce(_ + _)
// val res3 = arr.reduceLeft(_+_)
// val res4 = arr.reduceRight(_+_)
// val res5 = arr.par.reduce(_+_) //並行執行,如果執行減(_-_),每次的結果是不一樣的。
//ctrl+d 快捷鍵複製上一行
//摺疊:有初始值(無特定順序)
val res6 = arr.fold(0)(_ + _) //聚合時要將初始值累加進去
val res7 = arr.par.fold(10)(_ + _) //並行執行,初始值每個線程都加10,每次運行結果不一樣。
//摺疊:有初始值(有特定順序)
val res8 = arr.foldLeft(10)(_ + _)
val res9 = arr.foldRight(10)(_ + _)
val res10 = arr.foldLeft(10)(_ - _)
//該語句中每次運行結果都一樣,是-45,因爲foldLeft左摺疊優先,從左向右順序運行,par可以省略。
val res11 = arr.par.foldLeft(10)(_ - _)
//聚合
val list7 = List(List(1,2,3),List(3,4,5),List(2),List(0))
val res12 = list7.flatten.reduce(_+_)
//第一個參數,第一個_表示括號內的初始值,第二個_表示每一個小的List,.sum表示每個小的List局部聚合。
//第二個參數,表示全局聚合。
val res13 = list7.aggregate(0)(_+_.sum,_+_)
val l1 = List(5,6,4,7)
val l2 = List(1,2,3,4)
//求並集
val res14 = l1 union l2
//求交集
val res15 = l1 intersect l2
//求差集
val res16 = l1 diff l2
}
}
Scala初學小練習
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.