12.考虑实现Comparable接口

1. Comparable接口介绍

Comparable这个接口是用来实现对象排序的。假设有这么一个类:

然后我们可以这样对他进行排序:

现在对comparaTo()方法进行简单说明。

comparaTo()方法传入该类的另外一个实例,返回一个int值,这个方法每执行一次都是对传入的对象和和本生对象进行比较。返回的int值如果是一个正值(不包括零)则在数组或是集合中交换两个实例的位置,否则位置保持不变

2. 为什么要考虑实现Comparable接口

实现了Comparable接口的类,可以很好的和集合类或是一些泛型算法很好的协作,你可以付出很小的代价实现强大的功能。

3. 什么时候应该考虑是想Comparable接口

(1)你写的类是一个值类(前面的文章介绍过)。

(2)类中有很明显的内在排序关系,如字母排序、按数值顺序或是时间等。

(3)前面两者是并且关系。

4. 如何很好的实现Comparable接口

在JDK7版本及以上,Comparator实现类要满足如下三个条件,不然Arrays.sort,Collections.sort会报IllegalArgumentException异常。 说明:三个条件如下 

1) x,y的比较结果和y,x的比较结果相反。 

2) x>y,y>z,则x>z。

 3) x=y,则x,z比较结果和y,z比较结果相同。 

反例:下例中没有处理相等的情况,实际使用中可能会出现异常:

对于实现了Comparable接口的类,尽量不要继承它,而是采取复合的方式。

https://blog.csdn.net/jing_unique_da/article/details/49924289

https://www.jianshu.com/p/0c0bcc45700f

你可能感兴趣的:(12.考虑实现Comparable接口)