Comparator 和 Comparable 相同点 Comparator 和 Comparable都是java的接口,并且是用来对自定义的class比较大小的。 Comparator 和 Comparable 的区别 Comparable 对于Comparable接口来说,它往往是进行 比较类 需要 实现 的接口。 该比较器仅包含一个有compareTo()方法,只有一个参数,返回值为int。返回值大于0表示对象大于参数对象;小于0表示对象小于参数对象;等于0表示两者相等 是你要比较的类 要 实现 Comparable 实现在 Person类的内部: public class Persion implements Comparable {..compareTo() 比较Person的大小..} 因为已经实现了比较器,那么Person现在是一个可以比较大小的对象了,它的比较功能和String完全一样, 可以随时随地的拿来比较大小,因为Person现在自身就是有大小之分的。 Collections.sort(personList)可以得到正确的结果。 Comparator 对于Comparator接口来说,它的实现者被称为比较器, 它包含一个compare()方法,有两个参数,返回值与Comparable的compareTo()方法一样, 不同之处是Comparator接口一般不会被集合元素类所实现,而是单独实现或者匿名内部类方式实现。 Comparator 实现在Person的外部,此时Person类的结构不需要有任何变化,如: public class Person{ String name; int age } 然后另外定义一个比较器类: public PersonComparator implements Comparator {..compare() 比较Person的大小..} 在PersonComparator里面实现了怎么比较两个Person的大小。 所以,用这种方法,当要对一个 personList进行排序的时候,除了要传递personList过去,还需要把PersonComparator传递过去, 因为怎么比较Person的大小是在PersonComparator里面实现的,如:Collections.sort( personList , new PersonComparator() )
(77条消息) Comparable 和 Compator的区别_Liam_Fang_的博客-优快云博客_compator
Comparable 的使用,我们需要在源码Person上重写compareTo方法,
而在Compator的使用中我们无需在源码Person上重写相关的方法,而是只需要新建一个比较器类即可,该比较器实现了Compator接口的compare方法。
所以Comparable可以称之为内部比较器,
而Compator可以称之为外部比较器。