与前面讨论的方法不同,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()方法比较
如果这个类有若干个关键域,那么应该先比较最重要的那个域,然后比较次重要的那个域,依次。。。