集合扁平化操作 | 学习笔记

简介: 快速学习集合扁平化操作

开发者学堂课程【Scala 核心编程 - 进阶集合扁平化操作学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9050


集合扁平化操作


内容介绍:

一、扁平化的说明

二、扁平化的测试


一、扁平化的说明

1.flatmap 映射:

flat 即压扁,压平扁平化映射

2.flatmap:

flat 即压扁,压平,扁平化,效果就是将集合中的每个元素的子元素如果遍历出的元素还是一个集合则继续遍历,映射到某个函数并返回新的集合。

3.看一个案例: 

//将传入的字符串转成大写

val names = List("Alice", "Bob","Nick")

def upper( s : String ) : String ={

s. toUpperCase

}

//注意:每个字符串也是 char 集合

println(names.flatMap(upper))

4.说明:

flatMap 将 upper 传入,这个 upper 是将传入的字符串转成大写的,flatMap会将“Alice” 二次遍历,也就是说,如果这个元素还是一个集合,则会再次遍历,类似于底层的代码。

下面是底层的部分代码:

def map(f:Int=>Int):List[Int]={

//遍历集合

for(item<-this.list1){

/*如果 item 是一个集合,则继续 for 循环(集合里面有集合,则不停的打散,遍历)*/

for(item2<-item){

list2=list2:+f(item)

}

}

list2

}


二、扁平化的测试

object FlatMapDemoo1 {

def main( args : Array [string]): unit = {

val names = List( "Alice","Bob","Nick")

//需求是将List集合中的所有元素,进行扁平化操作,即把所有元素//打散

val names2 = names.flatMap( upper)

printLn( “name2=” +names2)

}

def upper( s : String ) :String = {

s. toupperCase

}

}

运行结果为:

names2=List(A,L,I,C,E,B,O,B,N,I,C,K)

说明 Alice Bob Nick 在底层相当于继续遍历,将字符串“打散”为字母。

相关文章
|
Java C++ 算法
带你读《JVM G1源码分析和调优》之二:G1的基本概念
本书尝试从G1的原理出发,系统地介绍新生代回收、混合回收、Full GC、并发标记、Refine线程等内容;同时依托于jdk8u的源代码介绍Hotspot如何实现G1,通过对源代码的分析来了解G1提供了哪些参数、这些参数的具体意义;最后本书还设计了一些示例代码,给出了G1在运行这些示例代码时的日志,通过日志分析来尝试调整参数并达到性能优化,还分析了参数调整可能带来的负面影响。
|
Linux 容器 Docker
Debian配置系统中文语言及环境
Debian配置系统中文语言及环境
11454 1
conda常用操作和配置镜像源
conda常用操作和配置镜像源
28929 0
|
数据安全/隐私保护 Python
解决CondaHTTPError:HTTP 000 CONNECTION FAILED for url<https://mirrors.tuna.tsinghua.edu.cn/anaconda***
今天做项目的时候,Python导入一个包一直有各类问题,而后最终锁定问题是CondaHTTPError:HTTP 000 CONNECTION FAILED for url<https://mirrors.tuna.tsinghua.edu.cn/anaconda*** 这就是清华的源出问题了,配置没配对。
解决CondaHTTPError:HTTP 000 CONNECTION FAILED for url<https://mirrors.tuna.tsinghua.edu.cn/anaconda***
|
iOS开发 MacOS Python
【Mac 系统】解决已有清华镜像但出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url
在尝试使用清华镜像创建conda环境时遇到下载超时问题,通过删除原有镜像并添加针对Mac OS的清华镜像解决了该问题。
398 3
|
数据可视化 UED Python
解锁Matplotlib的交互式图表功能
【4月更文挑战第17天】本文介绍了如何使用Matplotlib创建交互式图表,以增强数据探索体验。通过启用交互模式和利用`matplotlib.widgets`模块,可以创建滑动条、按钮等控件来改变图表属性。例如,滑动条可动态调整线宽,按钮用于切换图例显示。此外,还展示了如何使用Dropdown控件动态更新图表数据。掌握这些技巧能提升数据可视化的交互性和用户体验。
|
监控 机器人 BI
基于钉钉的阿里云管理实践(二)之消息接收
在企业云资源的日常管理中,实时监控和报警通知对于维持系统稳定性至关重要。阿里云提供了一系列的监控服务,可以对云资源进行实时监控,并在出现问题时发送报警。将这些报警消息及时推送到钉钉,可以让团队成员迅速响应,采取必要的措施。本教程将指导您如何将阿里云账号的报警监控消息推送到钉钉上。
654 1
基于钉钉的阿里云管理实践(二)之消息接收
|
Ubuntu
vscode配置clang-format自动格式化代码
vscode配置clang-format自动格式化代码
2504 0
|
Cloud Native Linux 数据中心
龙蜥白皮书精选:云原生混部资源隔离技术
不论是源码透明度,还是技术深度,以及场景的广度,龙蜥在资源隔离技术都是用户第一选择。
|
存储 Java 数据库连接
【MyBatis】学习笔记14:通过collection解决一对多的映射关系
【MyBatis】学习笔记14:通过collection解决一对多的映射关系
316 0
【MyBatis】学习笔记14:通过collection解决一对多的映射关系