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,... 表示的是元素中的第几个元素

说明:

  • reducereduceLeft 是一样的, 都是左归纳, 从左边的元素开始归纳

  • reduceRight 右归纳, 是指从集合的最右边的元素开始归纳

练习: 用归纳的方式计算出集合中的最小值

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-07-02 08:12:45

results matching ""

    No results matching ""