1. 程式人生 > >scala常用的聚合函式

scala常用的聚合函式

1.過濾:filter
val list1 = List(1,2,3,4,5,6,7,8,9)
val list2  = list1.filter(_%2==0)

2.foreach  (注意和map的區別)
val list3 = List(32,12,56,98,3)
注:如果用map遍歷會產生空的陣列
list3.map(x => println(x))
但是foreach就不會
list3.foreach(x => println(x))

3.化簡:reduce
val list = List(1,2,3,4,5)
list.reduce(_+_)
注意:底層呼叫的reduceLeft

4.集合並行化(計算機多核多執行緒操作 不指定並行任務 和計算機的核數有關)
val list = List(1,2,3,4,5)
list.par
注意:reduce支援平行計算
list.par.reduce(_+_)

5.摺疊 fold 指定初始值 同樣支援並行運算
list.par.fold(0)(_+_)
注意:如果不是並行運算 呼叫的是foldLeft()()

6.聚合(區域性求和 再彙總)
val arr = List(List(1, 2, 3), List(3, 4, 5), List(2), List(0))


  
arr.aggregate(0)(_+_.reduce(_+_),_+_)
arr.aggregate(10)(_+_.sum,_+_)
arr.par.aggregate(10)(_+_.sum,_+_)

7.集合並交差
val l1 = List(5,6,4,7)
    
val l2 = List(1,2,3,4)
 

7.1 求並集 l1.union(l2)
7.2 求交集 l1.intersect(l2)
7.3 求差集 l1.diff(l2)