compare排序原理

4 篇文章 0 订阅
3 篇文章 0 订阅

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.属性值(因为如果第二个数比第一个数大,会返回正值,两个对象要进行交换)。
  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值