Ordering 特质入门简介

排序是一种trait,其每个实例代表一种对类型实例进行排序的策略。


trait Ordering[T] extends Comparator[T] with PartialOrdering[T] with Serializable {outer =>/** Returns an integer whose sign communicates how x compares to y.** The result sign has the following meaning:**  - negative if x < y*  - positive if x > y*  - zero otherwise (if x == y)*/def compare(x: T, y: T): Int

看一下其实现类,比如String类型,其实最终是调用了java中String类compareTo方法

trait StringOrdering extends Ordering[String] {def compare(x: String, y: String) = x.compareTo(y)}implicit object String extends StringOrdering

看一下应用.以sortBy为例,这里的隐式参数就是调用了这个

def sortBy[B](f: A => B)(implicit ord: Ordering[B]): Repr

举例说明

scala> val x=List("a","d","c")
x: List[String] = List(a, d, c)
//第二个参数为隐式参数,可以传,也可以不传,这里传只是为了说明问题
scala>  x.sortBy(x=>x)(Ordering[String])
res14: List[String] = List(a, c, d)
//隐式参数传错无效
scala> x.sortBy(x=>x)(Ordering[Int])
<console>:27: error: type mismatch;found   : scala.math.Ordering[Int]required: scala.math.Ordering[String]x.sortBy(x=>x)(Ordering[Int])^
//隐式参数使用时无需传递
scala>  x.sortBy(x=>x)
res16: List[String] = List(a, c, d)

scala 排序接口Ordering相关推荐

  1. scala排序——ordering vs ordered

    在最近探索scala的过程中,发现一个比较重要的问题,那就是排序,排序在业务代码中还是很常见的,最常用的排序就是对集合调用sorted[B >: A](implicit ord: Orderin ...

  2. R语言对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法、data.table、dplyr等方案

    R语言对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法.data.table.dplyr等方案 目录

  3. R语言基于多字段(多数据列、multiple columns)对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法、data.table、dplyr等方案

    R语言基于多字段(多数据列.multiple columns)对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法.data.table.dplyr等方案 目录

  4. 淘特商品详情API接口(商品销量接口,商品销量排序接口,商品价格接口,商品属性接口)

    淘特商品详情API接口(商品销量接口,商品销量排序接口,商品价格接口,商品属性接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在U ...

  5. 淘特商品详情API接口(商品列表接口,商品销量接口,商品价格接口,商品价格排序接口,商品销量排序接口,专享价接口,已售商品数据接口,APP商品详情接口)

    淘特商品详情API接口(商品列表接口,商品销量接口,商品价格接口,商品价格排序接口,商品销量排序接口,专享价接口,已售商品数据接口,APP商品详情接口)代码对接如下: 1.公共参数 名称 类型 必须 ...

  6. 淘特关键词搜索商品列表接口(商品销量排序接口,商品销量接口,商品属性接口,价格排序接口)

    淘特关键词搜索商品列表接口(商品销量排序接口,商品销量接口,商品属性接口,价格排序接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接 ...

  7. guava排序器Ordering

    目录 1. 排序器的创建 2. 剖析与原生排序的区别 3. 链式调用 3.1 reverse() 3.2 nullsFirst()/nullsLast() 4 运用排序器 4.1 isOrdered ...

  8. Scala 排序函数 sorted sortBy sortWith

    排序方法在实际的应用场景中非常常见,Scala里面有三种排序方法,分别是: sorted,sortBy ,sortWith 分别介绍下他们的功能: (1)sorted 对一个集合进行自然排序,通过传递 ...

  9. java排序接口ComparableT 的实现与使用

    java集合排序 一.map集合的排序 比较value进行排序 List<String> lastEventCauselist = new ArrayList<String>( ...

最新文章

  1. Xamarin Essentials教程地理定位Geolocation
  2. 模拟计算机有声,小年糕有声影集软件电脑版
  3. Cocos2d-x 3.0正式版及android环境搭建
  4. 全国软考数据库系统工程师教程(第2版)目录
  5. git branch 为什么会进入编辑状态_Git很难,搞砸很容易,好在有神奇命令让时光倒流...
  6. 如何在Visual Studio项目中正确添加汇编代码 .
  7. python安装jupyterlab_超级详细 centos7 安装 jupyter lab
  8. 安装计算机主板应注意,组装计算机并仅更换主板时要注意的事项
  9. 推荐一款好用的java反编译软件——JavaDecompiler
  10. flash 绘图API:绘制秀曲线图形
  11. 科技爱好者周刊(第 194 期):悲观者正确,乐观者成功
  12. 百度ai 性别_是的,ai可能是种族主义者和性别歧视者,所以我们该怎么办
  13. ☆苹果MAC OS X ★ 安装双系统☆
  14. rancher k8s集群pod一直处于Pending状态
  15. STM32f1系列压力传感器MPX4250压力检测
  16. U-Boot中支持USB
  17. Mathematica
  18. 日常BUG总结:虚拟机centos7无法识别网卡
  19. uniapp 小程序横屏处理方案
  20. 手撕设计模式,如何理解依赖倒置原则和好莱坞原则

热门文章

  1. 腾讯云主机安全防护(云镜)/usr/local/qcloud/YunJing/YDEyes/YDService 卸载
  2. JAVA中pin什么意思_银行业加密算法,PIN相关算法(java-国密)
  3. 为什么mysql查询结果有前缀_字符串的公共前缀对Mysql B+树查询影响回溯分析
  4. composer全局 linux_Linux下全局安装composer方法
  5. 星型模型 3nf的区别_数据库和数据仓库的区别和联系
  6. django2连接mysql_Django2.2 连接mySQL数据库
  7. MySQL基础一些概念一些用法
  8. java线程下载文件_使用多线程在Java下载文件
  9. php截取多个分割符号_PHP按符号截取字符串的指定部分的实现方法
  10. springmvc 页面跳转样式访问路径总是多一层地址_Net Core实战之基于角色的访问控制的设计...