scala的函数式编程遍历

函数式编程
我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程。下面的这些操作是学习的重点。
遍历(foreach)
映射(map)
映射扁平化(flatmap)
过滤(filter)
是否存在(exists)
排序(sorted、sortBy、sortWith)
分组(groupBy)
聚合计算(reduce)
折叠(fold)

遍历 | Foreach
之前,学习过了使用for表达式来遍历集合。我们接下来将学习scala的函数式编程,使用foreach方法来进行遍历、迭代。它可以让代码更加简洁。
方法签名
scala foreach(f: (A) ⇒ Unit): Unit
说明
| foreach | API | 说明 | | ------- | ------------- | ------------------------------------------------------------ | | 参数 | f: (A) ⇒ Unit | 接收一个函数对象
函数的输入参数为集合的元素,返回值为空 | | 返回值 | Unit | 空 |
foreach执行过程
在这里插入图片描述
示例
有一个列表,包含以下元素1,2,3,4,请使用foreach方法遍历打印每个元素
参考代码
scala // 定义一个列表
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
在这里插入图片描述
// 迭代打印
scala> a.foreach((x:Int)=>println(x))
在这里插入图片描述使用类型推断简化函数定义
上述案例函数定义有点啰嗦,我们有更简洁的写法。因为使用foreach去迭代列表,而列表中的每个元素类型是确定的
scala可以自动来推断出来集合中每个元素参数的类型
创建函数时,可以省略其参数列表的类型

示例
有一个列表,包含以下元素1,2,3,4,请使用foreach方法遍历打印每个元素
使用类型推断简化函数定义
参考代码
scala scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
在这里插入图片描述// 省略参数类型
scala> a.foreach(x=>println(x))
在这里插入图片描述
使用下划线来简化函数定义
当函数参数,只在函数体中出现一次,而且函数体没有嵌套调用时,可以使用下划线来简化函数定义
示例
有一个列表,包含以下元素1,2,3,4,请使用foreach方法遍历打印每个元素
使用下划线简化函数定义
参考代码
scala scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
a.foreach(println(_))
在这里插入图片描述如果方法参数是函数,如果出现了下划线,scala编译器会自动将代码封装到一个函数中
参数列表也是由scala编译器自动处理

发布了106 篇原创文章 · 获赞 301 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/qq_45765882/article/details/104241480