开发者学堂课程【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” 二次遍历,也就是说,如果这个元素还是一个集合,则会再次遍历,类似于底层的代码。
下面是底层的部分代码:
d
ef map(f:Int=>Int):List[Int]={
//遍历集合
f
or(item<-this.list1){
/*如果 item 是一个集合,则继续 for 循环(集合里面有集合,则不停的打散,遍历)*/
f
or(item2<-item){
l
ist2=list2:+f(item)
}
}
l
ist2
}
二、扁平化的测试
object FlatMapDemoo1 {
def main( args : Array [string]): unit = {
val names = List( "Alice","Bob"
,
"Nick")
//需求是将List集合中的所有元素,进行扁平化操作,即把所有元素//打散
val names2 = names.flatMap( upper)
printLn( “name2=” +names
2
)
}
def upper( s : String ) :String = {
s. toupperCase
}
}
运行结果为:
names
2=List(A,L,I,C,E,B,O,B,N,I,C,K)
说明 Alice Bob Nick 在底层相当于继续遍历,将字符串“打散”为字母。