大数据-scala(五)

                                   大数据-scala(五)

函数式编程

遍历 - foreach

  • 方法描述
foreach(f: (A) ⇒ Unit): Unit
  • 方法说明
foreachAPI说明
参数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]
  • 方法说明
flatmapAPI说明
泛型[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]
  • 方法说明
filterAPI说明
参数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(六)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值