java技术--Comparable接口

1.jdk1.2新增的接口,位于java.lang包下。在jdk5时Comparable改成了Comparable
2.功能:用于对象的排序或者对象的分组

   所有可以 “排序” 的类都实现了java.lang.Comparable接口

3.Comparable接口强行对实现它的类的每个实例进行自然排序,该接口的唯一方法compareTo方法被称为自然比较方法
4.强烈建议自然排序和equals一致(就是两个对象调用compareTo方法和调用equals方法返回的布尔值应该一样)
5.方法: int compareTo(Object o) 利用当前对象和传入的目标对象进行比较

 (1)若是当前对象比目标对象大,则返回1
 (2) 若是当前对象比目标对象小,则返回-1
 (3) 若是两个对象相等,则返回0

6.应用实例:对狗狗按照年龄进行升序排序

public class Main {
//main方法测试
public static void main(String[]args){
List list = new ArrayList();
list.add(new Dog(6,"旺财"));
list.add(new Dog(3,"皮诺"));
list.add(new Dog(5,"子弹"));
for(int i=0;id.age) return 1;
if(this.age

扩展:

(1)进行降序
   在重写compareTo方法时,可以反过来写,如果当前狗狗的年龄对目标狗狗的年龄大的话,则返回-1。这样就可以达到降序的目的
(2)如果使用一些自带排序的集合容器,若是A类实现了Compareble接口,并且重写了compareTo()方法
   <1>使用Collections/Arrays的sort对该A的对象集合进行排序时,它会按照compareTo()方法中定义的那样进行排序
   <2>使用会自动排序的容器(TreeSet、TreeMap)来存A的对象时,它也会按照compareTo()方法中定义的那样进行排序
(3)缺点:
   Comparable和目标类的耦合度太高,如果对比较算法不满意,或者目标类没有实现Comparable接口,就得对原来的代码进行修改,
   这一点不符合设计模式的开闭原则(对扩展开放,对修改关闭)

你可能感兴趣的:(java技术基础专栏)