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

与前面讨论的方法不同,compareTo()方法并没有在Object类中定义。相反,它是Comparable接口中唯一的方法。

一个类的实例对象要想是可以比较大小的,那么这个类需要实现Comparable接口,必须正确的实现compareTo()方法。

一个类实现了Comparable接口,就表明这个类的实例对象具有内在的排序关系。

一旦类实现了Comparable接口,那么这个类就可以和依赖于该接口的集合实现进行协作,实现强大的功能。

JDK中的所有值类,String类都已经实现了Comparable接口。

comparaTo()方法的通用约定和equals()方法的有些相似:

大于返回1,相等返回0,小于返回-1

如果A.compareTo(B) 返回1,则B.compareTo(A)返回-1

如果A.compareTo(B) 返回0,则B.compareTo(A)返回0

如果A.compareTo(B)返回1,B.compareTo(C)返回1,则A.compareTo(C)返回1

如果比较的参数对象B不是这个类的对象  ,则抛出ClassCastException异常。

假设这个实现Comparable接口的类具有如下的域:

基本类型的域,直接使用 > 和 <小于号比较,但是double,和float类型的域,使用Double.compare(value1,value2)和Float.compare(value1,value2)

基本类型的包装类的域 ,使用compareTo()方法  ,因为这些类已经实现了Comparable接口  

引用类型的域,引用类型的类应该实现Comparable接口,然后调用compareTo()方法比较

如果这个类有若干个关键域,那么应该先比较最重要的那个域,然后比较次重要的那个域,依次。。。

原文地址:https://www.cnblogs.com/wangliyue/p/4454034.html