比较类的方法:
一:使用Comparable接口。这种方法定义的顺序通常称为 自然顺序
许多Java API的类,例如,String、Date、Calender类,及所有的基本数据类型的包装类,都实现了Comparable接口。
二:给规则集的元素指定一个比较器。这种方法定义的顺序称为 比较器顺序
//这是一个GeometricObject的比较器
public class GeometricObjectComparator implements Comparator, Serializable{
@Override
public int compare(GeometricObject o1, GeometricObject o2) {
double area1 = o1.getArea();
double area2 = o2.getArea();
if(area1 < area2) {
return -1;
}else if (area1 == area2) {
return 0;
}else{
return 1;
}
}
}
要想使用比较器,必须使用构造方法TreeSet(Comparator comparator)来创建一个有序集,它能使用比较器中的compare方法进行排序
public class TestTreeSetWithComparable {
public static void main(String[] args) {
//Create a tree set for geometric object using a comparator
Set set =
new TreeSet(new GeometricObjectComparator());
set.add(new Rectangle(4, 5));
set.add(new Circle(40));
set.add(new Circle(40));
set.add(new Rectangle(4, 1));
System.out.println("A stored set of geometric objects");
for(GeometricObject elements:set) {
System.out.println("Area = " + elements.getArea() );
}
}
}
Comparable 用于比较实现Comparable的类的对象,Comparator用于比较没有实现Comparable的类的对象