大数据-scala(五)
函数式编程
遍历 - foreach
- 方法描述
foreach(f: (A) ⇒ Unit): Unit
- 方法说明
foreach | API | 说明 |
参数 | f:(A) => Unit | 接收一个函数对象 函数的输入参数为集合的元素 返回值为空 |
返回值 | Unit | 空 |
- 方法实操
scala> val list=List(1,2,3,4)
list: List[Int] = List(1, 2, 3, 4)
//定义一个匿名函数传入到foreach方法中
scala> list.foreach((x:Int)=>println(x))
1
2
3
4
//匿名函数的输入参数类型可以省略,由编译器自动推断
scala> list.foreach(x=>println(x))
1
2
3
4
//当函数参数,只在函数体中出现一次,而且函数体没有嵌套调用时,可以使用下划线来简化函数定 义
scala> list.foreach(println(_))
1
2
3
4
//最简写,直接给定println
scala> list.foreach(println)
1
2
3
4
映射 - map
- 方法描述
def map[B](f: (A) ⇒ B): TraversableOnce[B]
- 方法说明
map方法 | API | 说明 |
泛型 | [B] | 指定map方法最终返回的集合泛型 |
参数 | f:(A) => B | 传入一个函数 该函数接收一个类型A(需要转换的列表元素) 返回值为类型B |
返回值 | TraversableOnce[B] | B类型的集合 |
- 方法实操
//定义一个list集合,实现把内部每一个元素做乘以10,生成一个新的list集合
scala> val list=List(1,2,3,4)
list: List[Int] = List(1, 2, 3, 4)
//定义一个匿名函数
scala> list.map((x:Int)=>x*10)
res21: List[Int] = List(10, 20, 30, 40)
//省略匿名函数参数类型
scala> list.map(x=>x*10)
res22: List[Int] = List(10, 20, 30, 40)
//最简写 用下划线
scala> list.map(_*10)
res23: List[Int] = List(10, 20, 30, 40)
扁平化映射 - flatmap
- 方法描述
def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): TraversableOnce[B]
- 方法说明
flatmap | API | 说明 |
泛型 | [B] | 最终需要转换的集合元素类型 |
参数 | f: (A) ⇒ GenTraversableOnce[B] | 传入一个函数对象 函数的参数是集合的元素 函数的返回值是一个集合 |
返回值 | TraversableOnce[B] | B类型的集合 |
- 方法实操
//定义一个List集合,每一个元素中就是一行数据,有很多个单词
scala> val list = List("hadoop hive spark flink", "hbase spark")
list: List[String] = List(hadoop hive spark flink, hbase spark)
//使用flatMap进行偏平化处理,获取得到所有的单词
scala> list.flatMap(x => x.split(" "))
res24: List[String] = List(hadoop, hive, spark, flink, hbase, spark)
//简写
scala> list.flatMap(_.split(" "))
res25: List[String] = List(hadoop, hive, spark, flink, hbase, spark)
// flatMap该方法其本质是先进行了map 然后又调用了flatten
scala> list.map(_.split(" ")).flatten
res26: List[String] = List(hadoop, hive, spark, flink, hbase, spark)
过滤 - filter
- 方法描述
def filter(p: (A) ⇒ Boolean): TraversableOnce[A]
- 方法说明
filter | API | 说明 |
参数 | p: (A) ⇒ Boolean | 传入一个函数对象 接收一个集合类型的参数 返回布尔值,满足条件返回true,否则返回false |
返回值 | TraversableOnce[A] | 列表 |
- 方法实操
//定义一个list集合
scala> val list=List(1,2,3,4,5,6,7,8,9,10)
list: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
//过滤出集合中大于5的元素
scala> list.filter(x => x >5)
res27: List[Int] = List(6, 7, 8, 9, 10)
//把集合中大于5的元素取出来乘以10生成一个新的list集合
scala> list.filter(_ > 5).map(_ * 10)
res29: List[Int] = List(60, 70, 80, 90, 100)
此博文仅供学习参考,如有错误欢迎指正。
上一篇《大数据-scala(四)》
下一篇《大数据-scala(六)》