博客
关于我
compare排序原理
阅读量:336 次
发布时间:2019-03-04

本文共 594 字,大约阅读时间需要 1 分钟。

Compare

样例代码:

class SortDemo extends Ordering[((Any, String), Int)]{     override def compare(x: ((Any, String), Int), y: ((Any, String), Int)): Int = {       y._2 - x._2  }}

原理:

  1. compare返回值是Int类型,三种情况正数、0、负数。
  2. compare如果比较的是Int、Float、Double类型的话,直接以值进行比较。
  3. compare如果比较的是String、char类型的数据,它会从两个数据的第一个字符开始比较,如果不同,就返回两个字符的ASCII差值;如果字符都相同,那么再比较两个字符串的长度,最后返回两个字符串长度的差值。
  4. compare比较如果返回的是正数,那么两个数要进行交换,如果结果为负数和0,两个数都不会进行交换。

结论:

对于compare(Object o1,Object o2)而言,

  1. 如果要按照对象的某一个属性进行升序排序,那么直接返回o1.属性值-o2.属性值(因为如果第一个数比第二个数大,会返回正值,两个对象要进行交换)。
  2. 如果要按照对象的某一个属性进行降序排序,那么直接返回o2.属性值-o1.属性值(因为如果第二个数比第一个数大,会返回正值,两个对象要进行交换)。

转载地址:http://luve.baihongyu.com/

你可能感兴趣的文章
Redis 集合统计(HyperLogLog)
查看>>
Dynamics CRM实体系列之字段
查看>>
RE套路 - 关于pyinstaller打包文件的复原
查看>>
【wp】HWS计划2021硬件安全冬令营线上选拔赛
查看>>
Ef+T4模板实现代码快速生成器
查看>>
dll详解
查看>>
c++ static笔记
查看>>
C++中头文件相互包含与前置声明
查看>>
9.4 翻译系列:EF 6以及 EF Core中的NotMapped特性(EF 6 Code-First系列)
查看>>
JQuery选择器
查看>>
MVC中在一个视图中,怎么加载另外一个视图?
查看>>
SQL--存储过程
查看>>
MVC学习系列5--Layout布局页和RenderSection的使用
查看>>
MVC学习系列13--验证系列之Remote Validation
查看>>
Spring容器管理Bean的生命周期
查看>>
如何理解Hibernate的延迟加载机制?在实际应用中,延迟加载与Session关闭的矛盾是如何处理的?
查看>>
多线程之volatile关键字
查看>>
2.1.4奇偶校验码
查看>>
2.2.2原码补码移码的作用
查看>>
多线程之Lock显示锁
查看>>