Scala map与flatMap
1. map函数 对集合的每一个元素运用某个函数操作,然后将结果作为一个新的列表返回。
实例1:将列表中每个元素值乘以2
scala> val list1=List(1,2,3,4)list1: List[Int] = List(1, 2, 3, 4)scala> list1.map(_*2)res54: List[Int] = List(2, 4, 6, 8)另一种写法:scala> list1.map(x=>x*2)res55: List[Int] = List(2, 4, 6, 8)实例2:分隔字符
scala> val l=List("jack","joe","terry","jerry")l: List[String] = List(jack, joe, terry, jerry) scala> l.map(_.split(" "))res20: List[Array[String]] = List(Array(jack), Array(joe), Array(terry), Array(jerry))2.flatMap 函数
对集合中每个元素运用某个函数操作(每个元素会被映射为0到多个输出元素)后,将结果扁平化组成一个新的集合。
实例1:分隔字符
scala> val l=List("jack","joe","terry","jerry")l: List[String] = List(jack, joe, terry, jerry)
scala> l.flatMap(_.split(" ")) res21: List[String] = List(jack, joe, terry, jerry)注意:map分隔符操作返回的类型为 List[Array[String]],而flatMap分隔操作返回的类型为 List[String]
实例2:每个元素映射为多个元素
scala> val rdd=Array(1,2,3)rdd: Array[Int] = Array(1, 2, 3)scala> val rdd2=rdd.flatMap(x=>x to 5)rdd2: Array[Int] = Array(1, 2, 3, 4, 5, 2, 3, 4, 5, 3, 4, 5)