Compareable与Comparator的比较。

本文探讨Compareable和Comparator接口在实现对象排序中的作用。通过对比,解释了实现Compareable接口的类需要重写compareTo()方法,而Comparator接口则需要实现compare()方法来创建自定义比较逻辑。同时,文中提供了两个接口的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.两者都是为了实现对对象排序更加方便,而产生的。实现Compareable与Comparator,目的就是为了可以直接对自定义对象进行排序。
Compareable接口
  • 实现 Compareable接口的对象要重写t.compareto(t1);方法。此时就相当与赋予了该对象了可以比较的功能。
Compareable接口使用实例
class Students implements Comparable<Students>{
    int age;
    String name;
    Students(int age,String name){
        this.age=age; this.name=name;
    }
    @Override
    //重写compareTo方法按Students的年龄排序
    public int compareTo(Students o) {
        if (this.age-o.age>0)
            return 1;
        if (this.age-o.age<0)
            return -1;
       else
        return 0;
    }

    @Override
    public String toString() {
        return "Students{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

public class TsetCompareable {
    public static void main(String args[]){

        List<Students> list =new ArrayList();
        list.add(new Students(10,"zhangsan"));
        list.add(new Students(18,"lisi"));
        list.add(new Students(9,"wangwu"));
        Collections.sort(list);
          System.out.println(list);
    }
}

输出结果
在这里插入图片描述

Comparator接口使用实例
  • 它是一个比较器。比如我们要给学生类排序可以写一个学生类的比较器。
  • 实现了Comparator接口的实现类就要重写compare(T t,T t1);方法
Comparator接口使用实例
class Student {
       int age;
      String name;
    Student(int age,String name){
        this.age=age; this.name=name;
    }
    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}
//学生比较器
class StudentComparator implements Comparator<Student>{

//重写compare方法
    @Override
    public int compare(Student student, Student student1) {
        if (student.age-student1.age>0)
            return 1;
        if (student.age-student1.age<0)
            return -1;
        else
            return 0;
    }
}
public class  ComparatorTest{
    public static void main(String args[]){

        List<Student> list =new ArrayList();
        list.add(new Student(10,"zhangsan"));
        list.add(new Student(18,"lisi"));
        list.add(new Student(9,"wangwu"));
        Collections.sort(list,new StudentComparator());
               System.out.println(list);
    }
}

输出结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值