2021年大数据常用语言Scala(二十五):函数式编程 排序
目录
排序
默认排序 sorted
指定字段排序 sortBy
自定义排序 | sortWith
排序
在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
2021年大数据常用语言Scala(二十五):函数式编程 排序相关推荐
- 2021年大数据常用语言Scala(十五):基础语法学习 元组 重点掌握
目录 元组 重点掌握 定义元组 访问元组 元组 重点掌握 元组可以用来包含一组不同类型的值.例如:姓名,年龄,性别,出生年月.元组的元素是不可变的. 数组: 同一类数据成组 元组: 不同的元素成组 ...
- 2021年大数据常用语言Scala(十四):基础语法学习 数组 重点掌握
目录 数组 重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组 重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...
- 2021年大数据常用语言Scala(十二):基础语法学习 方法调用方式
目录 方法调用方式 后缀调用法 中缀调用法 操作符即方法 花括号调用法 无括号调用法 方法调用方式 在scala中,有以下几种方法调用方式, 后缀调用法 中缀调用法 花括号调用法 无括号调用法 在后续 ...
- 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握
目录 列表 List 重点掌握 不可变列表定义 可变列表 列表常用操作 列表 List 重点掌握 列表是scala中最重要的.也是最常用的数据结构.List具备以下性质: 可以保存重复的值 有先后顺序 ...
- 2021年大数据常用语言Scala(十八):基础语法学习 Map对象
目录 Map对象 不可变Map 可变Map Map基本操作 Map对象 Map可以称之为映射.它是由键值对组成的集合.在scala中,Map也分为不可变Map和可变Map. 不可变Map 定义 语法 ...
- 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器
目录 iterator迭代器 使用迭代器遍历集合 iterator迭代器 scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合 使用迭代器遍历集合 使用iterator方法可 ...
- 2021年大数据常用语言Scala(十):基础语法学习 方法
目录 方法 定义方法 返回值类型推断 方法 一个类可以有自己的方法,scala中的方法和Java方法类似.但scala与Java定义方法的语法是不一样的. 定义方法 语法 def methodName ...
- 2021年大数据常用语言Scala(二十):函数式编程 介绍
目录 函数式编程 介绍 函数式编程的意义在哪? 函数式编程 介绍 我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程.下面的这些操作是学习的重点. 现在我们将会逐渐接触函数式编程的方 ...
- 2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach
目录 遍历 foreach 使用类型推断简化函数定义 使用下划线来简化函数定义 遍历 foreach 之前,学习过了使用for表达式来遍历集合.我们接下来将学习scala的函数式编程,使用fore ...
- 2021年大数据常用语言Scala(四):基础语法学习 声明变量
目录 声明变量 语法格式 在解释器中定义一个变量 val和var变量 使用类型推断来定义变量 惰性赋值 声明变量 我们将来每一天编写scala程序都会定义变量.那scala语言如何定义变量呢? 语法格 ...
最新文章
- java矩阵传递给r_从JAVA调用R得到卡方统计和p值
- redis之adlist.c
- bootloader搞定,1.67秒!
- 宝塔mysql远程链接_宝塔apache启动失败:报错 AH00526: Syntax error on line 解决方案
- pom.xml配置文件配置jar(不用记,快速配置)
- java获取500错误_HTTP 500错误
- Excel 使用VBA 使表格的值被修改后填充颜色标注
- java密码校验_java强密码校验
- OSB格式(REST)转化(XML到JSON,JSON到XML)
- Neo4j-import导入CSV的数据
- [转]c# 语音卡控制--语音卡电话呼叫系统
- win10的计算机用户名怎么改,win10账户名修改,教您win10怎么更改账户名称
- 用html代码在word中插入分页符,Word文档中插入分页符并对分页方式进行设置的方法...
- 新机器部署linux系统(非虚拟机)
- 模糊数学在计算机方面的应用,模糊数学理论在图像处理中的应用
- 献给还在加班的你:摸鱼一时爽,一直摸鱼一直爽~
- java架构师_如何成为一个资深Java架构师?
- 合肥工业大学宣城校区2020年-2021年第一(大四上)学期物联网工程专业资料汇总(含课件、个人实验报告、实验代码、课设报告等)
- L2-038 病毒溯源 (25 分)
- java测试报告模板_Maven测试报告的生成和查看