第十二条:考虑实现Comparable接口

compareTo方法并没有在Object中声明,它是Comparable接口中唯一的方法。compareTo方法不但允许进行简单的等同性比价,而且允许执行顺序比较,它与Object的equals方法具有相似的特征,它还是个泛型。

类实现了Comparable接口,就表明它的实例具有内在的排序关系

一旦类实现了Comparable接口,它就可以跟许多泛型算法以及依赖于该接口的集合实现协作。比如按字母顺序,按数值顺序或者按年代顺序,compareTo方法的通用约定于equals方法的相似:

将这个对象与指定的对象进行比较。当该对象小于、等于或大于指定对象的时候,分别返回一个负数、零或者正整数。如果由于指定对象的类型而无法与该对象进行比较,则抛出ClassCastException异常。

在下面的说明中,符号sgn(表达式)表示数学中的signum函数,它根据表达式的值为负值、零和正值,分别返回-1、0和1。

  • 必须确保所有的x和y都满足sgn(x.compareTo(y)) == -sgn(y.compareTo(x))。

  • 必须确保这个比较关系是可以传递的:(x.compareTo(y) > 0 && y.compareTo(z) > 0)暗示着x.compareTo(z) > 0。

  • 最后,必须确保x.compareTo(y) == 0 暗示着所有的z都满足sgn(x.compareTo(z)) == sgn(y.compareTo(z))

  • 强烈建议(x.compareTo(y) == 0) == (x.equals(y)),这个绝非必要,一般来说,任何实现了Comparable接口的类,若违反了这个条件,都应该明确说明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值