接口 Comparable:
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。 字符串 数组列表 数组
所有可以 “排序” 的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法。
public int compareTo(Object obj) ;该方法:
返回 0 表示 this == obj
返回整数表示 this > obj
返回负数表示 this < ob
实现了 Comparable 接口的类通过实现 comparaTo 方法从而确定该类对象的排序方式。compareTo就比较用来比较两个值,如果前者大于后者,返回1,等于返回0,小于返回-1。
该接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。
实现此接口的对象列表和数组可以通过 Collections.sort (和 Arrays.sort )进行自动排序。如Jdk 中 Long 根据 value 大小进行排序
1.实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。
2.实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
一个类若要实现Comparable接口,必须要override里面的compareTo方法
public class Circle implements Comparable<Circle>{
private double radius;
public Circle(){
}
public Circle(double radius){
this.radius = radius;
}
public double getPerimeter(){ //求周长方法
return 2*radius*Math.PI;
}
public double getArea(){ //求面积方法
return radius*radius*Math.PI;
}
@Override //要实现Comparable接口中的CompareTo方法
public int compareTo(Circle o) {
if(this.getArea() > o.getArea())
return 1;
else if(this.getArea()<o.getArea())
return -1;
else
return 0;
}
public static void main(String[] args){
//Circle circle = new Circle();
Circle[] circles = new Circle[]{
new Circle(3.4),new Circle(2.5),new Circle(5.8)
};
System.out.println(circles[0].compareTo(circles[1]));
System.out.println(circles[1].compareTo(circles[2]));
}
}