使用 Comparable<Object>?
Using Comparable<Object>?
我正在处理现有代码。在代码中创建了一个对象列表,然后在此列表上使用 Collections.sort 和 Collections.reverse。
这是他们想要比较的 class 的一个小例子:
public class Student implements Comparable<Student> {
public int compareTo(Student s) {
//code comparing the instance's score to parameter score
}
}
列表是学生类型,输出是根据分数降序排列的对象。让一个实例了解其自身的另一个实例是好事还是坏事?
我在使用 Comparable 时遇到的问题是,是否有更好的方法来实现他们想要实现的目标?
编辑:仍然习惯于向其他人解释我的问题。我还是个学生,谢谢你的提示。
另一种可能的方法是实现 Comparator 并将其作为参数提供给 Collection.sort 方法。类似于:
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
};
Collections.sort(yourList, comparator);
你的列表在哪里List<Integer> yourList = new ArrayList<>();
您描述现有代码的方式反映了针对这种情况的最佳做法。这就是 compareTo 应该如何工作的。您可以提供比较器的外部实现,但在这里没有充分的理由这样做。
我正在处理现有代码。在代码中创建了一个对象列表,然后在此列表上使用 Collections.sort 和 Collections.reverse。
这是他们想要比较的 class 的一个小例子:
public class Student implements Comparable<Student> {
public int compareTo(Student s) {
//code comparing the instance's score to parameter score
}
}
列表是学生类型,输出是根据分数降序排列的对象。让一个实例了解其自身的另一个实例是好事还是坏事?
我在使用 Comparable 时遇到的问题是,是否有更好的方法来实现他们想要实现的目标?
编辑:仍然习惯于向其他人解释我的问题。我还是个学生,谢谢你的提示。
另一种可能的方法是实现 Comparator 并将其作为参数提供给 Collection.sort 方法。类似于:
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
};
Collections.sort(yourList, comparator);
你的列表在哪里List<Integer> yourList = new ArrayList<>();
您描述现有代码的方式反映了针对这种情况的最佳做法。这就是 compareTo 应该如何工作的。您可以提供比较器的外部实现,但在这里没有充分的理由这样做。