val arr = List(List(1, 2, 3), List(3, 4, 5), List(2), List(0))
scala> val arr =List(List(1,2,3),List(3,4,5),List(2),List(0));
arr: List[List[Int]] = List(List(1, 2, 3), List(3, 4, 5), List(2), List(0))
arr.aggregate(0)(+.reduce(+),+)
scala> arr.aggregate(0)(_+_.reduce(_+_),_+_);
res18: Int = 20
第一个_代表累加后的值,就是先做局部运算
第二个.reduce(+_) 代表 每一个 内部List 进行汇总运算
运算步骤:
(+.reduce(+)) 先计算 list1 1+2+3 6
(+.reduce(+)) 再计算list2 3+4+5 12
(+.reduce(+)) list3计算 2
(+.reduce(+)) list4计算 0
以上局部变量就计算完了
当list1计算出来的时候就放到 + 初始值为0 + 6
然后当list2计算出来的时候 + 值 为 2+12
后面依次相加 …
下面这两种写法都可以
arr.aggregate(10)(+.sum,+)
arr.par.aggregate(10)(+.sum,+)
.par ---- 变成并行式的集合进行分区,分片多核计算
scala> arr.par.aggregate(10)(_+_.sum,_+_);
res19: Int = 60