Java Comparable 接口

Comparable 接口 compareTo 方法应该兼容 equals 方法:当 x.equals(y) 时,x.compareTo(y) 应该等于 0。

大多数类都是遵循这一原则。但典型的 BigDecimal 没有遵循

假设 x = new BigDecimal("1.0") ,y = new BigDecimal("1.00")

此时,x.equals(y) 等于 false,x.compareTo(y) 等于 0。

 

带有继承关系的接口方法实现:

class Employee implements Comparable<Employee>{

 

 

   String name;

   int age;

 

 

   public String getName() {

      return name;

   }

 

 

   public void setName(String name) {

      this.name = name;

   }

 

 

   public int getAge() {

      return age;

   }

 

 

   public void setAge(int age) {

      this.age = age;

   }

 

 

   public Employee() {};

 

 

   public Employee(String name, int age) {

      super();

      this.name = name;

      this.age = age;

   }

 

 

   public static String staticString() {

      return "static method.";

   }

 

 

   @Override

   public String toString() {

      return String.format("%s[name=%s, age=%d]", getClass().getName(), this.name, this.age);

   }

 

 

   @Override

   public int compareTo(Employee o) {

      return Integer.compare(this.age, o.age);

   }

}

 

 

Manager 继承 Employee,并且重写 compareTo 方法。

 

public class Manager extends Employee {

 

 

    public int order;

 

 

    public Manager(String name, int age, int order) {

        super(name, age);

        this.order = order;

    }

 

 

    public int getOrder() {

        return order;

    }

 

 

    public void setOrder(int order) {

        this.order = order;

    }

 

 

    @Override

    public String toString() {

        return String.format("%s[name=%s, age=%d, order=%d]", getClass().getName(), this.name, this.age, this.order);

    }

 

 

    @Override

    public int compareTo(Employee o) {

        Manager other = (Manager) o;

        return Integer.compare(this.order, other.order);

    }

}

 

 

测试

 

Employee[] employees = {new Manager("a", 2, 1), new Manager("b", 1, 2), new Manager("c", 3, 3)};

Arrays.sort(employees);

System.out.println(Arrays.toString(employees));

 

 

 

Employee[] employees = {new Employee("a", 2), new Employee("b", 1), new Employee("c", 3)};

Arrays.sort(employees);

System.out.println(Arrays.toString(employees));

 

原文地址:https://www.zhblog.net/go/java/tutorial/java-comparable-interface?t=593

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值