Comparable和Comparator两个接口比较

https://www.cnblogs.com/xujian2014/p/5215082.html
首先 Comparable是一个排序结口。需要实现了其中的compareTo(T o)方法(按照顺序排序)
Comparator结口实现的是compare(T o1,T o2)方法。

Comparable

Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现(返回值为int),compareTo方法也被称为自然比较方法
Comparable支持排序:实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。

Comparator

Comparator可以认为是是一个外比较器。Comparator接口里面有一个compare方法,方法有两个参数T o1和T o2,是泛型的表示方式,分别表示待比较的两个对象,方法返回值和Comparable接口一样是int

总结 Comparator比Comparable更具优势

总结一下,两种比较器Comparable和Comparator,后者相比前者有如下优点:

1、如果实现类没有实现Comparable接口,又想对两个类进行比较(或者实现类实现了Comparable接口,但是对compareTo方法内的比较算法不满意),那么可以实现Comparator接口,自定义一个比较器,写比较算法:Comparator更适合自定义的比较,可以直接有一个MyComparator实现Comparator,Person类再实现MyComparator;Comparable就比较固定,想要实现自定义就要 修改源码。

2、实现Comparable接口的方式比实现Comparator接口的耦合性 要强一些,如果要修改比较算法,要修改Comparable接口的实现类,而实现Comparator的类是在外部进行比较的,不需要对实现类有任何修 改。从这个角度说,其实有些不太好,尤其在我们将实现类的.class文件打成一个.jar文件提供给开发者使用的时候。实际上实现Comparator 接口的方式后面会写到就是一种典型的策略模式

你可能感兴趣的:(Java)