为什么我们使用 Comparator 而不是 Comparable 除了它有助于自定义排序顺序的原因之外?

Why do we use Comparator over Comparable apart from the reason that it helps in customised sorting order?

Comparator 用于自定义排序顺序,Comparable 也可以实现。那么我们为什么要使用比较器呢?

So why do we use Comparator?

部分原因包括:

  • 因为Comparable只允许定义一种排列顺序。一些应用程序需要不止一种排序顺序;例如姓名顺序与年龄顺序,或姓名顺序与反向姓名顺序。

  • 因为您可能无法自定义类型。例如,您无法自定义 String 的排序顺序,因为 Stringfinal class.

  • 因为自定义class的排序顺序可能不合适。例如,class 有任何 natural 排序可能根本没有意义。


无论如何,Comparator 提供了 Comparable 的替代方案。不想用也可以不用。