Comparable Interface
Comparable是Java API中的一个用于比较操作的接口,查找、排序等算法中两个元素的比较必不可少,而且比较操作依赖于数据类型。怎么样使得Java API中的排序算法应用于我们自定义的数据类型呢?这里就需要借助于Comparable,它在排序算法和我们自定义的数据类型之间形成了一个抽象层,实现了算法层次和数据类型比较操作的解耦,我们具体还是以几何图形按面积排序来讲解。
1. 定义一个抽象类ComparableGeometry,让所有的几何形状拥有一致的比较操作:

ComparableGeometry实现了Comparable<>接口,<>中的是泛型类型,这里针对几何图形进行比较,所以采用Comparable<ComparableGeometry>。实现接口中的compareTo方法,编写比较操作的业务代码,如果当前对象面积大则返回正数1,相等则返回0,面积较小则返回负数-1。
2. 定义实体类ComparableCircle和ComparableRectangle,其内容和之前的类似。
3. 客户端应用Arrays的public static void sort(Object[] a)函数进行排序,sort函数要求a中的所有对象都实现了comparable接口。

ComparableGeometry数组中既有矩形,也有圆形,进行排序时,不需要自己编写排序算法,直接用Java API提供的就可以了,Java API这种“超预见”的设计就是由面向抽象编程实现的,在以后的应用中,只要不是特殊需要,我们不用编写任何排序算法。

