简单的改变
public int compare(Dog d, Dog d1) {
return d.age - d1.age;
}
至
public int compare(Dog d, Dog d1) {
return d1.age - d.age;
}
如果这是你正在寻找的,应该按照与时间相反的顺序进行排序.
更新:
@Arian在他的评论中是正确的,宣布比较一个狗的方式之一是你将其声明为类本身的公共静态最终字段.
class Dog implements Comparable {
private String name;
private int age;
public static final Comparator DESCENDING_COMPARATOR = new Comparator() {
// Overriding the compare method to sort the age
public int compare(Dog d, Dog d1) {
return d.age - d1.age;
}
};
Dog(String n, int a) {
name = n;
age = a;
}
public String getDogName() {
return name;
}
public int getDogAge() {
return age;
}
// Overriding the compareTo method
public int compareTo(Dog d) {
return (this.name).compareTo(d.name);
}
}
然后,您可以在代码中使用任何您希望比较狗的位置,如下所示:
// Sorts the array list using comparator
Collections.sort(list, Dog.DESCENDING_COMPARATOR);
实现Comparable时要记住的另一件重要的事情是,compareTo与equals一致.虽然不是必需的,但是不能这样做可能会导致某些集合的奇怪行为,例如集合的某些实现.有关实现compareTo的声音原理的更多信息,请参阅this post.