1.Comparable 接口定义了compareTo方法,用于比较对象,为了找出两个相同类型的对象中较大者的通用方法。Comparable接口是一个范型接口。在实现该接口时,范型类型E被替换成一种具体的类型。Java库中的许多类实现了Comparable接口以定义对象的自然顺序。Byte、Short、Integer、Long、Float、Double…以及Data类
2.由于所有Comparable对象都有compareTo方法,如果对象是Comparable接口类型的实例的方法,Java API中的Arrays.sort(Object[])方法就可以使用compareTo方法来对数组中的对象进行比较和排序.
import java.util.Arrays;
public class TaskComparable {
public static void main(String[] args) {
String[]strings={"b","a","c"};
Arrays.sort(strings);
for (String string : strings) {
System.out.println(string);//a b c
}
}
}
3.如果自定义类想比较两个相同对象谁大谁小,那么就可以实现Comparable类然后重写compareTo()方法。例如:
public class ComparableRectangle implements Comparable<ComparableRectangle> {
double area;
double width;
double height;
public ComparableRectangle(double width,double height){
this.width=width;
this.height=height;
}
public double getArea(){
return height*height;
}
@Override
public int compareTo(ComparableRectangle o) {
if (this.getArea()<o.getArea()){
return -1;
}else if (this.getArea()==o.getArea()){
return 0;
}else{
return 1;
}
}
public static void main(String[] args) {
ComparableRectangle c1=new ComparableRectangle(10,11);
ComparableRectangle c2=new ComparableRectangle(12,13);
System.out.println("比较结果:"+c1.compareTo(c2));
}
}
4.注意Object的equals方法是为了比较连个对象的内容是否相同,不要与compareTo方法混淆.