大数据全系列 教程
1869个小节阅读:464.9k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
如下错误的理解,巧合的是结果是对的。
正确的理解思路:
xxxxxxxxxx
package com.itbaizhan.chapter07
object CollectionMethod3 extends App {
val list = List(1, 2, 3, 4)
//聚合计算:最大值、最小值、和、乘积 (了解)
println("集合最大值:"+list.max)
println("集合最小值:"+list.min)
println("集合的和:"+list.sum)
println("集合的乘积:"+list.product)//1*2*3*4=24
//自定义数据计算操作的方法
//集合的元素无论多少,常用的就是两两计算
//map=>reduce=>简化 规约 聚合
/*def reduceFun(x:Int,y:Int): Int ={
x+y
}
val result1:Int = list.reduce(reduceFun)*/
//逐渐简化
/*val result1: Int = list.reduce((x: Int, y: Int) => {
x + y
})*/
//val result1: Int = list.reduce((x: Int, y: Int) => x + y)
//val result1: Int = list.reduce((x, y) => x + y)
val result1: Int = list.reduce(_+_)
println("reduce(_-_):"+list.reduce(_-_))//-8
//val result3: Int = list.reduce(_*_)
println("reduce result1:"+result1)
//从左边聚合 reduce() 底层调用的就是reduceLeft
//def reduce[A1 >: A](op: (A1, A1) => A1): A1 = reduceLeft(op)
println("reduceLeft:"+list.reduceLeft(_+_))
//从右边聚合 求和、求积的从左从右开始计算结果一样,但是求差、求商还一样吗
println("reduceRight+:"+list.reduceRight(_+_))
//reduceRight计算逻辑:reversed.reduceLeft[B]((x, y) => op(y, x))
//1, 2, 3, 4 reversed反转 4,3,2,1 1-(2-(3-4))
println("reduceRight-:"+list.reduceRight(_-_))//-2
}
实时效果反馈
1. 关于相关代码的描述,错误的是:
A sum()
将集合中的所有元素进行求和,得到一个数值结果。
B product()
将集合中的所有元素进行乘积,得到一个数值结果。
C reduce(op: (A1, A1) => A1)
该方法的参数为一个函数,通过指定的函数将集合中的元素从左到右进行按照参数函数的计算逻辑进行两两计算,最后得到一个数值结果。
D reduceRight(op: (A1, A1) => A1)
该方法的参数为一个函数,通过指定的函数将集合中的元素从左到右进行按照参数函数的计算逻辑进行两两计算,最后得到一个数值结果。
答案:
1=>D 从左到右。