How to Implement the Comparable Interface and Why Should We Implement It
重写 Comparable 接口的 compareTo() 方法的最佳方法是什么?此外,当我们可以编写自己的 compareTo() 方法而不需要实现时,为什么我们还需要实现 Comparable 接口。以下面的 Seat 类为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
即使我们没有实现 Comparable 接口,上述方法仍然有效,那么我们为什么要实现它呢?
why would we ever need to implement the Comparable Interface when we
can write our own compareTo() method without the implementation
以
1 | public static <T extends Comparable<? super T>> void sort(List< T > var0) |
泛型类型参数意味着我们只能对与其自身(或子类型)可比的事物列表进行排序。例如,我们可以对字符串列表进行排序,因为
没有定义这个约束的接口,这个方法不可能存在。
What is the best way to override the compareTo() method of the
Comparable Interface?
这完全取决于您正在使用的课程。如果它没有明确的自然顺序,那么也许你不应该这样做。座位可以按数量或价格排序。随意选择一个不一定有意义。
出于这个原因,像上面的
1 | public static < T > void sort(List< T > var0, Comparator<? super T> var1) |
这意味着我们不必随意定义座位是否按数量或价格自然排序。我们可以有一段代码使用一个比较器按价格排序,而另一段完全独立的代码使用另一个比较器按座位号排序。
实现