使用 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 应该如何工作的。您可以提供比较器的外部实现,但在这里没有充分的理由这样做。