3分钟上手使用Comparable

Comparable的作用

此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法

通俗的讲就是对两个对象进行比较大小,然后进行排序。

哪些类实现了Comparable接口

String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式。

重写compareTo(obj)的规则

  1. 如果当前对象this大于形参对象obj,则返回正整数,
  2. 如果当前对象this小于形参对象obj,则返回负整数,
  3. 如果当前对象this等于形参对象obj,则返回零。

如何使用Comparable

题目: 我们使用年龄从小到大排序,如果年龄相同则按照姓名从小到大排序

  1. 自定义类实现Comparable重写compareTo方法

  2. public class Students implements Comparable<Students> {
        private String name;
        private int age;
    
        public Students() {
        }
    
        public Students(String name, int age) {
            this.name = name;
            this.age = 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;
        }
    
        @Override
        public String toString() {
            return "Students{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    
        @Override
        public int compareTo(Students o) {
            if (this.age>o.age){
                return 1;
            }else if (this.age<o.age){
                return -1;
            }else {
                return this.name.compareTo(o.name);
            }
        }
    }
    
    
  3. 把对象写入数组中。

  4. 调用数组工具类的sort方法,实际执行的就是自己重写的compareTo方法

  5. String类可以直接排序就是因为它实现了comparable,我们调用sort的时候,实际执行的还是compareTo方法

  6. @Test
        public void test(){
            Students[] students = new Students[5];
            students[0] = new Students("zhangsan",15);
            students[1] = new Students("lucy",15);
            students[2] = new Students("lisi",18);
            students[3] = new Students("ami",20);
            students[4] = new Students("jack",16);
            Arrays.sort(students);
            for (Students student : students) {
                System.out.println(student);
            }
        }
    
  7. 注意: 如果我们把对象写入数组中,使用Arrays.sort排序。如果我们把对象写出集合中,使用Collections.sort排序。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值