比较器(Comparable与Comparator接口)

有错之处,希望大家可以指出来,谢谢。

概念

比较器:对两个或多个数据进行比较,以确定它们是否相等,或确定他们之间的大小关系以及排列顺序(来自于百度)。

Java中的比较器主要是通过实现Comparable与Comparator两个接口来实现的

Comparable接口

通过类继承接口,在类中对CompareTo()方法进行复写完成比较

主要实现语句:

类+implements Comparable<>{

public int compareTo(Work o){

return 0;

}

}

比较方法:

通过if(){}else{}语句进行判断返回值是-1,1,0中的哪一个,使用时通过返回的是-1,1,0来对比较者进行顺序的排列。

Comparable接口实现注意:接口的实现位置要在类所在的位置,比如此类是Worker类那么Comparable接口要在Worker类中实现。

例如:

 public class Worker implements Comparable<Worker> {
   
  ......
  ......
      
     public int compareTo(Worker o) {
   
        if (this.salary <o.salary) {
   
            return 1;
        } else if (this.salary>o.salary) {
   
            return -1;
        } else  {
      //如果第一个条件相等,的比较第二个条件
            if (this.age > o.age) {
   
                return 1;
            } else if (this.age < o.age) {
   
                return -1;
            } else{
   
                return 0;
            }

        }
 }

Comparable接口实例:

public class Worker implements Comparable<Worker> {
   
//public class Worker {
   
    private String name;
    private int age;
    private float salary;

    public Worker(String name, int age, float salary) {
   
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    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 float getSalary() {
   
        return salary;
    }

    public void setSalary(float salary) {
   
        this.salary = salary;
    }

    @Override
    public String toString() {
   
        return "Worker{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
    @Override
    public int compareTo(Worker o) {
   
        if (this.salary <o.salary) {
   
            return 1;
        } else if (this.salary>o.salary) {
   
            return -1;
        } else  {
   
            if (this.age > o.age) {
   
                return 1;
            } else if 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值