比较器Comparable与Compartor接口

在Java中若想实现自定义的类的比较有两个接口
java.lang.Comparable接口(内部比较器)-排序接口
若一个类实现了Comparable接口,表示该类支持排序。并且存放该类的Conllection或数组,可以直接通过Collection.sort()或Arrays.sort进行排序

实现了Comparable接口的类可以直接存放在TreeSet或者TreeMap中。
public int compareTo(T o);

返回正数:表示当前对象大于目标对象
返回0:表示当前对象等于目标数组
返回负数:表示当前对象小于目标数组

Comparator(外部排序接口)
若要控制某个自定义类的顺序,而该类本身不支持排序,类本身没有实现Comparable接口,我们可以建立一个该类的“比较器”来进行排序。比较器实现Comparator接口即可。

“比较器”:实现了Comparator接口的类作为比较器,通过该比较器进行类的排序
int compare(T o1, T o2);

返回正数表示 o1 > o2
返回0表示: o1 = o2
返回小数表示 o1 < o2

实现了Compartor接口进行的第三方排序—策略模式,此方法更加灵活,可以轻松改变策略进行第三方的排序算法。

Comparable接口与Comparator接口的关系:
Comparable是排序接口,若一个类实现Comparable接口,意味着该类支持排序,是一个内部比较器(自己去和别人比)
Comparator接口是比较器接口,类本身不支持排序,专门有若干个第三方的比较器(实现了Compartor接口的类)来进行类的排序,是一个外部比较器。

你可能感兴趣的:(Java)