2021年大数据常用语言Scala(二十五):函数式编程 排序
目录
排序
在scala集合中,可以使用以下几种方式来进行排序
- sorted默认排序
- sortBy指定字段排序
- sortWith自定义排序
默认排序 sorted
示例
定义一个列表,包含以下元素: 3, 1, 2, 9, 7
对列表进行升序排序
参考代码
-
scala> List(3,1,2,9,7).sorted
-
res16: List[Int] = List(1, 2, 3, 7, 9)
指定字段排序 sortBy
根据传入的函数转换后,再进行排序
方法签名
def sortBy[B](f: (A) ⇒ B): List[A]
方法解析
sortBy方法 |
API |
说明 |
泛型 |
[B] |
按照什么类型来进行排序 |
参数 |
f: (A) ⇒ B |
传入函数对象<br />接收一个集合类型的元素参数<br />返回B类型的元素进行排序 |
返回值 |
List[A] |
返回排序后的列表 |
示例
有一个列表,分别包含几下文本行:"01 hadoop", "02 flume", "03 hive", "04 spark"
请按照单词字母进行排序
参考代码
-
scala> val a = List("01 hadoop", "02 flume", "03 hive", "04 spark")
-
a: List[String] = List(01 hadoop, 02 flume, 03 hive, 04 spark)
-
-
// 获取单词字段
-
scala> a.sortBy(_.split(" ")(1))
-
res8: List[String] = List(02 flume, 01 hadoop, 03 hive, 04 spark)
自定义排序 | sortWith
自定义排序,根据一个函数来进行自定义排序
类似在Java中实现Comparable接口
方法签名
def sortWith(lt: (A, A) ⇒ Boolean): List[A]
方法解析
sortWith方法 |
API |
说明 |
参数 |
lt: (A, A) ⇒ Boolean |
传入一个比较大小的函数对象<br />接收两个集合类型的元素参数<br />返回两个元素大小,小于返回true,大于返回false, 也就是升序排序的意思, 如果要实现降序, 可以自行控制小于返回false 大于返回true<br />不用去想这两个参数是如何传递的, scala会自动帮我们将带处理列表的元素两两传递过来让我们进行排序 |
返回值 |
List[A] |
返回排序后的列表 |
示例
有一个列表,包含以下元素:2,3,1,6,4,5
使用sortWith对列表进行降序排序
参考代码
-
scala> val a = List(2,3,1,6,4,5)
-
a: List[Int] = List(2, 3, 1, 6, 4, 5)
-
-
scala> a.sortWith((x,y) => if(x<y)true else false)
-
res15: List[Int] = List(1, 2, 3, 4, 5, 6)
-
-
scala> res15.reverse
-
res18: List[Int] = List(6, 5, 4, 3, 2, 1)
使用下划线简写上述案例
参考代码
-
scala> val a = List(2,3,1,6,4,5)
-
a: List[Int] = List(2, 3, 1, 6, 4, 5)
-
-
// 函数参数只在函数中出现一次,可以使用下划线代替
-
scala> a.sortWith(_ < _).reverse
-
res19: List[Int] = List(6, 5, 4, 3, 2, 1)
两个参数都是只出现一次, 并没有嵌套, 那么可以用下划线代替
第一个下划线代表参数1
第二个下划线代表参数2
文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。
原文链接:lansonli.blog.csdn.net/article/details/116547716
- 点赞
- 收藏
- 关注作者
评论(0)