快学Scala之函数式编程

快学Scala之函数式编程,第1张

快学Scala之函数式编程

终于来到函数式编程了,跟着我的节奏一起冲冲冲

遍历

        foreach的图解

 

        使用foreach遍历集合

var list = List(1,2,3,4) 对list进行遍历 list.foreach(println(_))

        上面式简略的形式,其实是这样的

    正常的格式
list.foreach((x : Int) => {println(x})

2.省略参数类型

list.foreach((x) => {println(x})

3.使用下划线来代替x

list.foreach(println(_))

map

 

        集合的映射是指将一种数据类型转换成其它的数据类型

        有下面的列表

        List(1,2,3,4)

        将里面的数据变成原来的2倍

val list = List(1,2,3,4) println(list.map(_*2))
扁平化映射

        扁平化映射可以理解为先map,然后再flatten。

        下面通过一个例子展示一下flatmap

        有一个包含了若干个文本行的列表:"hadoop hive spark flink flume", "kudu hbase sqoop

storm"

val list1 = List("hadoop hive spark flink flume",
 "kudu hbase sqoop storm")
list1.flatMap(_.split(" "))

        根据空格拆分,将原本的

                List("hadoop hive spark flink flume")

        变成下面的模样

                hadoop hive spark flink flume

Fliter过滤

        筛选出符合条件的元素

 

 

                1 2 3 4 5 6 7 8 9 筛选出来式偶数的数字

  val list = (1 to 9 ).toList val list2 = list.fliter(_ % 2 == 0)

        如果模2的余数是0,那么这个数就是偶数

排序
    sorted 用来对集合元素进行默认排序sortBy 用来对集合按照指定字段排序sortWith 用来对集合进行自定义排序

sorted默认排序

        对列表元素按照升序进行排序,怎么实现降序呢?升序之后用reverse就可以

val list = List(1,2,3,4) val list2 = list.sorted 
升序的结果 1,2,3,4

sortBy指定字段排序

        对列表元素根据传入的函数转换后,进行排序

        1. 有一个列表,分别包含几下文本行:"01 hadoop", "02 flflume", "03 hive", "04 spark"

        2. 请按照单词字母进行排序

val list1 = List("01 hadoop", "02 flume", "03 hive", "04 spark") 
//根据单词字母进行排序,需要找到单词字母 
val list2 = list1.sortBy(_.split(" ")(1))
list1.sortBy(_.split(" ")(1))

        先对列表中的每一个元素按照空格进行拆分,拆分之后就是 01 hadoop

        然后(1)取第二个元素。 第二个元素就是hadoop

自定义排序

        按照自定义函数来进行排序

        对 2,3,1,6,4,5进行排序

      

  val list = List(2,3,1,6,4,5) 
//定义排序的方式 
val list2 = list.sortWith(_ > _)

        什么是 SortWith(_>_)

        > 按照降序排序

分组

        分组指的是指将数据按照指定条件进行分组

        下面看分组的图解

 

        1. 有一个列表,包含了学生的姓名和性别: "刘德华" -> "男", "刘亦菲" -> "女", "胡歌" -> "男,按照性别进行分组

val list1 = List("刘德华" -> "男", "刘亦菲" -> "女", "胡歌" -> "男")
//按照性别分组 
val list2 = list1.groupBy(_._2) 
//统计不同性别的人数 
val list3 = list2.map(x => x._1 -> x._2.size)

        解释一下

        "刘德华" -> ”男“

        打印的时候是 (刘德华,男) 元组类型

        所以可以用 ._1 ._2

总结

        终于把Scala中的自带的数据结构啃完了

        下面就是一些语法糖了。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5715541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存