Comparable 是给要排序的实体本身实现的接口,而 Comparator 则是第三方。
比如:类 A 实现了 Comparable 接口,表示它可以和另一个 A 比较来达到排序的目的。
但,假设用户想点击按钮“按名字排序”,之后他又想“按QQ号排序”,这样的需求我们用 Comparable 是无法同时满足两种情况的,那么我们就需要第三方 Comparator,当我们在使用 Collections.sort() 方法时传递这个 Comparator 让它来排序。因此 Comparable 里面的方法只需要 1 个参数,因为另一个参数就是这个 A 类实例自己,而 Comparator 需要 2 个参数,它是第三方比较器,接收 2 个参数。 |