比较类的方法:
一:使用Comparable接口。这种方法定义的顺序通常称为 自然顺序
许多Java API的类,例如,String、Date、Calender类,及所有的基本数据类型的包装类,都实现了Comparable接口。
二:给规则集的元素指定一个比较器。这种方法定义的顺序称为 比较器顺序
//这是一个GeometricObject的比较器
public class GeometricObjectComparator implements Comparator<GeometricObject>, 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<GeometricObject> set =
new TreeSet<GeometricObject>(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的类的对象
Java集合框架中Comparable与Comparator的使用
本文详细介绍了Java中Comparable接口与Comparator类在集合框架中的应用,包括自然顺序与比较器顺序的区别,以及如何自定义比较器来实现特定的排序逻辑。通过实例展示了如何在TreeSet中使用自定义比较器进行排序。
792

被折叠的 条评论
为什么被折叠?



