scala flatMap 简介

scala  flatMap的理解

一、官方例子个人解析

<pre name="code" class="java">object FlatMapTest extends App{
  //官方API用法

  
def getWords(lines: Seq[String]): Seq[String] = lines flatMap (line => line split "\\W+")
//返回的集合是静态类型,所以必须要注意返回的类型,例如:

var words:List[String] =List[String]("asd","sdf","11111")
//返回seq集合而不是set集合
def lettersOf(words: Seq[String]) = words flatMap (word => word.toSet)
var temp = lettersOf(words)
println(temp.mkString(","))
// 返回set集合而不是seq集合
def lettersOf1(words: Seq[String]) = words.toSet[String] flatMap (word => word)
var temp1 = lettersOf1(words)
println(temp1.mkString(","))

// xs will be a an Iterable[Int]
//注意这里的_是tuple类型,flatMap自动把map转为tuple类型这里等价于(m=>m._2)
val xs = Map("a" -> List(11,111,22), "b" -> List(22,222,2222)).flatMap(_._2) 
println(xs.mkString(","))

// ys will be a Map[Int, Int]
val ys = Map("a" -> List(1 -> 11,1 -> 111), "b" -> List(2 -> 22,2 -> 222)).flatMap(_._2)
 println(ys.mkString(","))
 
 println("通过以上两个例子可以总结:1.对于一阶集合flatMap返回与主对象相同的类型\n
2.对于map,flatMap能扁平化一层的map,把map的每个键值对都转为tuple形式")
}


 


 结果: 

a,s,d,s,d,f,1
s,f,a,1,d
11,111,22,22,222,2222
1 -> 111,2 -> 222
通过以上两个例子可以总结:1.对于一阶集合flatMap返回与主对象相同的类型
2.对于map,flatMap能扁平化一层的map,把map的每个键值对都转为tuple形式



  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值