Comparable属于java.lang.Comparable接口;
Comparator属于java.util.Comparator接口;
class compare1 implements Comparable{
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
}
class compare2 implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
return 0;
}
}
从上面两端代码可以看出,Comparable接口包含一个compareTo(Object o)方法,返回int类型的值。Comparator接口包含compare(Object o1, Object o2)方法,同样返回int类型值。
从两个需要的实现的方法可以看出,compareTo()只传入一个参数,说明其将传入的参数与自己比较,所以Comparable是一个内比较器,可以实现和自己比较。
compare()方法传入了两个参数,实现时将两个参数进行比较,表明Comparator是一个外比较器,不支持和自己进行比较。
compareTo()方法与compare()方法:
当返回值为正数时,说明前者比后者大;
当返回值为0时,说明两者相等;
当返回值为负数时,说明后者比前者大。
Collections类中sort()方法【集合的排序方法】:默认的排序是自然排序,即从小到大的排序。其也提供重写Comparator方法,实现自定义排序;
Collections.sort(list, new Comparator<Double>() {//列表中数据从大到小排序
@Override
public int compare(Double o1, Double o2) {
// TODO Auto-generated method stub
if(o1<o2){
return 1;
}
if(o1>o2){
return -1;
}
return 0;
}
});