大数据全系列 教程
1869个小节阅读:464.7k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
扁平化方法flatten和flatMap
xxxxxxxxxx
package com.itbaizhan.chapter07
import scala.collection.mutable.ListBuffer
object CollectionMethod6 {
def main(args: Array[String]): Unit = {
//TODO 1.将整体拆分为个体的过程,被称为扁平化
val buffer: ListBuffer[ListBuffer[Int]] = ListBuffer(
ListBuffer(1, 2),
ListBuffer(3, 4))
println(buffer.length)//2
println(buffer)
//将两层的buffer对象扁平化为ListBuffer(1,2,3,4)
//TODO 2.flatten 调用一次就可以实现一层数据的扁平化
println(buffer.flatten)
//TODO 3.如果有多层呢?
val buffer1 = ListBuffer(
ListBuffer(
ListBuffer(1,2),ListBuffer(3,4)
),
ListBuffer(
ListBuffer(5,6),ListBuffer(7,8)
)
)
//扁平化了一层:ListBuffer(ListBuffer(1, 2), ListBuffer(3, 4), ListBuffer(5, 6), ListBuffer(7, 8))
println(buffer1.flatten)
//扁平化两层:ListBuffer(1, 2, 3, 4, 5, 6, 7, 8)
println(buffer1.flatten.flatten)
//TODO 4.拆分为一个个的单词,将来用于单词出现次数的统计
val listBuffer: ListBuffer[String] = ListBuffer(
"Hello Tom", "Hello Peter"
)
println(listBuffer.flatten)
//输出:ListBuffer(H, e, l, l, o, , T, o, m, H, e, l, l, o, , P, e, t, e, r)不是我先要的
//flatten扁平化操作很多时候不符合我们的需要,输出和预期不符合,该如何做?
//TODO 5.flatMap 可以自定义扁平化规则
/*val words: ListBuffer[String] = listBuffer.flatMap(
ele => {
ele.split(" ")
})*/
//简化
val words: ListBuffer[String] = listBuffer.flatMap(_.split(" "))
println(words)//ListBuffer(Hello, Tom, Hello, Peter)
}
}