Comparable接口

178 阅读1分钟

多个对象做比较,就要有“比较规则”,然后实现排序

事实上,Java中排序算法的底层也依赖Comparable接口

Comparable接口中只有一个方法:

punblic int comparTo(Object obj)obj 为要比较多对象

方法中,将当前对象和obj这个对象进行比较,如果大于返回一,等于返回0,小于返回-1,(此处的1也可以是正整数,-1也可以是负整数)comparTo方法的代码也比较固定:

public int comparableTo(Object o){
    Man man = (Man)o;
    if(this.age<man.age){
        return-1;
    }
    if(this.age>man.age){
        return 1;
        
    }
    return 0;
}

例:

package com.gaobo.testshuzu;

import java.util.Arrays;

//测试Comparable
public class Test12 {
    public static void main(String[] args) {
        Man2[]msMans = {new Man2(3,"a"),
                        new Man2(60,"b"),
                        new Man2(2,"c")};
        System.out.println(Arrays.toString(msMans));
        Arrays.sort(msMans);//处理排序,必须要实现comparable接口
        System.out.println(Arrays.toString(msMans));
    }

}
//comparable接口定义的是规则
class Man2 implements Comparable {//Man2继承父类接口Comparable,数组里有多个man
    int age;
    int id;
    String name;//属性

    public Man2(int age,String name){
        super();//两种作用;1,调用属性和方法。2,调用构造器
        this.age = age;
        this.name = name;
    }

    public  String toString(){
        return this.name;
    }

    public int compareTo(Object o){
        Man2 man2 = (Man2)o;
        if(this.age < man2.age){
            return -1;
        }
        if(this.age > man2.age){
            return 1;
        }
        return 0;
    }
}//定义规则