11.4 归纳集合(reduce)
package com.atguigu.day11.operate
object FilterDemo2 {
def main(args: Array[String]): Unit = {
var list1 = List(10, 1, 3, 5, 8, 9, 22, 89)
// 计算 list1 中所有数的和
// 使用循环的方式肯定可以完成, 但是比较low. 我们使用归纳的方式, 也叫化简
/*
reduce 方法会分别使用上次 sum 函数的结果与这次的函数进行归纳处理
第一次: 因为没有上一次的结果, 所以会把前两个元素(10, 1)传入sum函数, 然后
得到的值是 11 , 两个数变成了一个数, 第一次归纳完成
第二次: 用上次归纳的结果 11(传递个sum第一个参数) 与第三个数 3(传递给sum第二个参数) 进行归纳, 得到结果 14
第三次: 与第二次一样
...
最终得到一个结果, 所以叫归纳或者化简
*/
val result: Int = list1.reduce(sum)
println(result)
}
def sum(a: Int, b: Int) = {
a + b
}
}
逻辑图: 1,2,3,... 表示的是元素中的第几个元素
说明:
reduce
和reduceLeft
是一样的, 都是左归纳, 从左边的元素开始归纳reduceRight
右归纳, 是指从集合的最右边的元素开始归纳