2021年大数据常用语言Scala(二十三):函数式编程 扁平化映射 flatMap

Posted Lansonli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年大数据常用语言Scala(二十三):函数式编程 扁平化映射 flatMap相关的知识,希望对你有一定的参考价值。

目录

扁平化映射 | flatMap

定义

案例


扁平化映射  flatMap

扁平化映射也是将来用得非常多的操作,也是必须要掌握的。

定义

可以把flatMap,理解为先map,然后再flatten

 

就是说, 我们对待处理列表, 正常我们处理它 需要 先对其进行map操作, 然后再进行flatten操作 这样两步操作才可以得到我们想要的结果.

如果我们有这样的需求, 我们就可以使用flatMap( 此方法帮我们实现 先map 后flatten的操作)

  • map是将列表中的元素转换为一个List
    • 这是什么意思呢? 这里是指待处理列表中的每一个元素, 都有转换成一个list的需求, 如果我们没有这样的需求, 那么其实就用不到flatMap 直接用flatten方法就行.
    • 可能大家还是有点晕, 我们向下看, 到下面具体的例子就会明白.
  • flatten再将整个列表进行扁平化

方法签名

def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): TraversableOnce[B]

方法解析

flatmap方法

API

说明

泛型

[B]

最终要转换的集合元素类型

参数

f: (A) ⇒ GenTraversableOnce[B]

传入一个函数对象<br />函数的参数是集合的元素<br />函数的返回值是一个集合

返回值

TraversableOnce[B]

B类型的集合

 

案例

案例说明

有一个包含了若干个文本行的列表:"hadoop hive spark flink flume", "kudu hbase sqoop storm"

获取到文本行中的每一个单词,并将每一个单词都放到列表中

 

思路分析

 

步骤

使用map将文本行拆分成数组

再对数组进行扁平化

 

参考代码

// 定义文本行列表
scala> val a = List("hadoop hive spark flink flume", "kudu hbase sqoop storm")
a: List[String] = List(hadoop hive spark flink flume, kudu hbase sqoop storm)

// 使用map将文本行转换为单词数组
scala> a.map(x=>x.split(" "))
res5: List[Array[String]] = List(Array(hadoop, hive, spark, flink, flume), Array(kudu, hbase, sqoop, storm))

// 扁平化,将数组中的
scala> a.map(x=>x.split(" ")).flatten
res6: List[String] = List(hadoop, hive, spark, flink, flume, kudu, hbase, sqoop, storm)

 

 

使用flatMap简化操作

参考代码

scala>  val a = List("hadoop hive spark flink flume", "kudu hbase sqoop storm")
a: List[String] = List(hadoop hive spark flink flume, kudu hbase sqoop storm)

scala> a.flatMap(_.split(" "))
res7: List[String] = List(hadoop, hive, spark, flink, flume, kudu, hbase, sqoop, storm)

 

以上是关于2021年大数据常用语言Scala(二十三):函数式编程 扁平化映射 flatMap的主要内容,如果未能解决你的问题,请参考以下文章

2021年大数据常用语言Scala(二十五):函数式编程 排序

2021年大数据常用语言Scala(二十):函数式编程 介绍

2021年大数据常用语言Scala(二十七):函数式编程 聚合操作

2021年大数据常用语言Scala(二十四):函数式编程 过滤  filter

2021年大数据常用语言Scala(三十三):scala高级用法 模式匹配

2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach