集合化简介绍和案例 | 学习笔记

简介: 快速学习集合化简介绍和案例

开发者学堂课程【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)

//代码说明

  1. reduceLeft函数的作用:从左开始化简
  2. defreduceLeft[B>:A](@deprecatedName(f)op:B,A)=>B):B

B,A为接收的两个参数

  1. reduceLeft(f)接收的函数需要的形式为op:(B,A)=>B):B

接收的两个参数返回的结果会作为下一次调用的第一个参数,即B

  1. reduceLeft(f)的运行规则是从左边开始执行,将得到的结果返回给第一个参数与下一个元素运行,将得到的结果再次返回给第一个参数,继续调用
  2. 即://((((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.位置说明

image.png

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

相关文章
|
9月前
数学基础从高一开始4、集合的基本运算2
数学基础从高一开始4、集合的基本运算2
64 0
|
9月前
数学基础从高一开始3、集合的基本运算
数学基础从高一开始3、集合的基本运算
77 0
|
8月前
|
移动开发 C++
【洛谷 P1157】组合的输出 题解(深度优先搜索+枚举子集)
该问题要求编程输出从1到n中选择r个元素的所有组合,组合按字典序排列。输入包含两自然数n和r(1<n<21, 0≤r≤n)。输出每个组合时,每个数字占据3个字符宽度。提供的AC代码使用C++,通过递归搜索方法枚举子集。样例输入为5 3,输出显示所有3个元素的组合。
71 0
|
9月前
|
自然语言处理
数学基础从高一开始2、集合间的基本关系
数学基础从高一开始2、集合间的基本关系
67 0
离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)
离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)
248 0
|
Scala 开发者
集合化简的流程示意图 | 学习笔记
快速学习集合化简的流程示意图
集合化简的流程示意图 | 学习笔记
|
vr&ar
【离散数学】集合与关系
1. 集合 2. 序偶 3. 笛卡尔积 4. 关系 5. 复合关系 6. 逆关系 7. 关系的闭包运算 8. 集合的划分与覆盖 9. 等价关系 10. 相容关系 11. 序关系
213 0
|
存储 算法
一文搞懂全排列、组合、子集问题
Hello,大家好,我是bigsai,long time no see!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合、子集等问题更是非常经典问题。本篇文章就带你彻底搞懂全排列!
224 0
一文搞懂全排列、组合、子集问题
|
Scala 开发者
集合化简的课堂练习 | 学习笔记
快速学习集合化简的课堂练习
|
算法
重温算法之两个数组的交集
有时候看到很多题解都是使用现有的方法去实现,其实管它黑猫白猫,能解题就行了,我之前面试遇到算法题的第一印象是不会考虑现有方法的,比如list的排序,肯定不会考虑list.sort,所以有时候还是得学会变通,灵活运用。
133 0
重温算法之两个数组的交集