目录

排序

默认排序  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(二十五):函数式编程 排序相关推荐

  1. 2021年大数据常用语言Scala(十五):基础语法学习 元组  重点掌握

    目录 元组  重点掌握 定义元组 访问元组 元组  重点掌握 元组可以用来包含一组不同类型的值.例如:姓名,年龄,性别,出生年月.元组的元素是不可变的. 数组: 同一类数据成组 元组: 不同的元素成组 ...

  2. 2021年大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

    目录 数组  重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组  重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...

  3. 2021年大数据常用语言Scala(十二):基础语法学习 方法调用方式

    目录 方法调用方式 后缀调用法 中缀调用法 操作符即方法 花括号调用法 无括号调用法 方法调用方式 在scala中,有以下几种方法调用方式, 后缀调用法 中缀调用法 花括号调用法 无括号调用法 在后续 ...

  4. 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握

    目录 列表 List 重点掌握 不可变列表定义 可变列表 列表常用操作 列表 List 重点掌握 列表是scala中最重要的.也是最常用的数据结构.List具备以下性质: 可以保存重复的值 有先后顺序 ...

  5. 2021年大数据常用语言Scala(十八):基础语法学习 Map对象

    目录 Map对象 不可变Map 可变Map Map基本操作 Map对象 Map可以称之为映射.它是由键值对组成的集合.在scala中,Map也分为不可变Map和可变Map. 不可变Map 定义 语法 ...

  6. 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器

    目录 iterator迭代器 使用迭代器遍历集合 iterator迭代器 scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合 使用迭代器遍历集合 使用iterator方法可 ...

  7. 2021年大数据常用语言Scala(十):基础语法学习 方法

    目录 方法 定义方法 返回值类型推断 方法 一个类可以有自己的方法,scala中的方法和Java方法类似.但scala与Java定义方法的语法是不一样的. 定义方法 语法 def methodName ...

  8. 2021年大数据常用语言Scala(二十):函数式编程 介绍

    目录 函数式编程 介绍 函数式编程的意义在哪? 函数式编程 介绍 我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程.下面的这些操作是学习的重点. 现在我们将会逐渐接触函数式编程的方 ...

  9. 2021年大数据常用语言Scala(二十一):函数式编程 遍历 foreach

    目录 遍历  foreach 使用类型推断简化函数定义 使用下划线来简化函数定义 遍历  foreach 之前,学习过了使用for表达式来遍历集合.我们接下来将学习scala的函数式编程,使用fore ...

  10. 2021年大数据常用语言Scala(四):基础语法学习 声明变量

    目录 声明变量 语法格式 在解释器中定义一个变量 val和var变量 使用类型推断来定义变量 惰性赋值 声明变量 我们将来每一天编写scala程序都会定义变量.那scala语言如何定义变量呢? 语法格 ...

最新文章

  1. java矩阵传递给r_从JAVA调用R得到卡方统计和p值
  2. redis之adlist.c
  3. bootloader搞定,1.67秒!
  4. 宝塔mysql远程链接_宝塔apache启动失败:报错 AH00526: Syntax error on line 解决方案
  5. pom.xml配置文件配置jar(不用记,快速配置)
  6. java获取500错误_HTTP 500错误
  7. Excel 使用VBA 使表格的值被修改后填充颜色标注
  8. java密码校验_java强密码校验
  9. OSB格式(REST)转化(XML到JSON,JSON到XML)
  10. Neo4j-import导入CSV的数据
  11. [转]c# 语音卡控制--语音卡电话呼叫系统
  12. win10的计算机用户名怎么改,win10账户名修改,教您win10怎么更改账户名称
  13. 用html代码在word中插入分页符,Word文档中插入分页符并对分页方式进行设置的方法...
  14. 新机器部署linux系统(非虚拟机)
  15. 模糊数学在计算机方面的应用,模糊数学理论在图像处理中的应用
  16. 献给还在加班的你:摸鱼一时爽,一直摸鱼一直爽~
  17. java架构师_如何成为一个资深Java架构师?
  18. 合肥工业大学宣城校区2020年-2021年第一(大四上)学期物联网工程专业资料汇总(含课件、个人实验报告、实验代码、课设报告等)
  19. L2-038 病毒溯源 (25 分)
  20. java测试报告模板_Maven测试报告的生成和查看

热门文章

  1. 前来推荐一本比较喜欢的读物——《浪潮之巅》
  2. 2022-2028年中国中密度纤维板市场投资分析及前景预测报告
  3. 2022-2028年中国中空玻璃聚硫密封胶行业市场研究及前瞻分析报告
  4. Git 常用操作(2)- 创建标签
  5. windows安装MongoDB环境以及在pycharm中配置可视化插件
  6. Box2d 基础入门知识
  7. 【C#实践】三层实例:登录过程
  8. torch中的copy()和clone()
  9. LeetCode简单题之学生出勤记录 I
  10. LeetCode简单题之找到所有数组中消失的数字