本帖最后由 jiyixuan 于 2012-5-14 09:32 编辑
1、Comparable是个java.lang包下的一个超级接口.它有一个方法compareTo(Object o);
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
可以看一下该接口的定义:
public interface Comparable
{
public int compareTo(Object o);
}
该接口定义类的自然顺序,实现该接口的类就可以按这种方式排序.
2、Comparator是个java.util包下的一个接口,强行对某个对象 collection 进行整体排序的比较函数。实现这个接口可以构造一个对某个容器实现排序的比较器!就是说,我们不想用自然排序,就不要实现Comparable接口,我们可以自己实现一个Compraator接口,构造一个我们业务所需要的比较器!这么以来我们的构造起非常灵活!
看一下Comparator的全部内容:
public interface Comparator
{
int compare(Object o1, Object o2);
boolean equals(Object obj);
}
看出Comparator接口里面有两个方法public int compare(Object arg0, Object arg1)和boolean equals(Object obj);继承 Comparator接口必须实现compare方法,我们一般都只需要实现compare方法就行了,因为类都是默认从Object继承过来的 ,所以会使用Object的equals方法。
简单说就是实现Comparable接口时注意覆盖其compareTo方法,在需要自己指定特殊的比较方式时,利用比较器(Comparator )方式实现,那么就需要覆盖compare方法。听老师说,在实际情况中,都使用比较器Comparator 比较常见。
|