开发者学堂课程【Scala 核心编程 - 进阶:集合化简介绍和案例】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9052
集合化简介绍和案例
内容介绍
一、化简介绍
二、代码演示
一、化简介绍
1.需求引入
val list=List(1,20,30,4,5),求出 list 的和。
2.化简含义
将二元函数引用于集合中的函数。二元函数即接收两个参数的函数,以上引入的需求不仅可以使用遍历list方法来解决,同时也能使用 scala 的化简方式完成。
3.案例演示
val list=List(1,20,30,4,5)
def sum(n1:lnt,n2:lnt):lnt={
n1+n2
}
val res=list reduceLeft(sum)
Println(
“
res=
”
+res)
//代码说明
- reduceLeft函数的作用:从左开始化简
- defreduceLeft[B>:A](@deprecatedName(‘f)op:B,A)=>B):B
B,A为接收的两个参数
- reduceLeft(f)接收的函数需要的形式为op:(B,A)=>B):B
接收的两个参数返回的结果会作为下一次调用的第一个参数,即B
- reduceLeft(f)的运行规则是从左边开始执行,将得到的结果返回给第一个参数与下一个元素运行,将得到的结果再次返回给第一个参数,继续调用
- 即://((((1+2)+3)+4)+5)=15
二、代码演示
1.写入代码
将下列代码写入 ReduceDemo01
val list=List(1,20,30,4,5)
def sum(n1:lnt,n2:lnt):lnt={
n1+n2
}
2.位置说明
3.具体代码
package com. atguigu. chapter11
object Reduc eDemo01
{
def main(args: Array[String]):Unit =
{
/*
使用化简的方式来计算 list 集合的合
*/
val list = List(1, 20,
30
, 4, 5)
val res = list.reduceLeft(sum)
//执行的流程分析
//步骤1(1+20)
//步骤2(1+20)+30
//步骤3((1+20)+30)+4
//步骤4(((1+20)+30)+4)+5=60
println("res="+res)
/
/ 60
}
def sum(n1: Int, n2: Int): Int =
{
println(
“
sum被调用~~”)
n1+n2
}
}
4.对 ReduceLeft 的运行机制的说明
(1)defreduceLeft[B>:A](@deprecatedName(‘f)op:B,A)=>B):B
(2)reduceLeft(f)接收的函数需要的形式为op:(B,A)=>B):B
接收的两个参数返回的结果会作为下一次调用的第一个参数,即B
(3)reduceLeft(f)的运行规则是从左边开始执行得到的结果返回给第一个参数
(4)然后继续和下一个元素运行,将得到的结果继续返回给第一个参数,继续调用
(5)即://((((1+2)+3)+4)+5)=15