Java中比较器有两种:Comparable与Comparator。
区别:1、Comparable是一个要进行多个对象比较的类需要默认实现的一个接口。在java.lang包中,定义如下:
public interface Comparable <T>
{
public int compareTo(T o);
}
此方法返回int数据,即调用此方法的对象A与对象o比较大小,若相等,返回0,A>o,返回1,A<哦,返回-1 。
2、Comparator是一个挽救的比较器接口。即假设有一个类已经开发完了,在此类使用了很久之后发现需要对这个类的对象进行排序,但是由于此类并没有实现Comparable接口,所以需要利用Comparator接口实现比较。Comparator接口在Java.util包中,定义如下:
public interface Comparator<T>
{
public int compare(T o1,T o2);
public boolean equals(Object obj);
}
此方法返回int数据,o1>o2,返回正数,o1<o2,返回负数,o1=o2,返回0。
3、如果某个类要用比较功能,则必须实现Comparable接口,并重写comparaTo()方法;Comparator接口可以在类的外部使用,即可以在类的外部定义比较规则。
使用Comparable时:Collections.sort(obj);
使用Comparator时:Collections.sort(obj,new Comparator() ),即需要将Comparator接口的一个匿名类对象当做参数传递给Collections.sort。