Fameyoung 2021-03-12 11:36 采纳率: 0%
浏览 307

Comparable 中 compareTo()是怎么实现排序的

public class PersonTest implements Comparable{

    private String name;
    private int age;

    public PersonTest(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public int compareTo(Object o) {
        if (o instanceof PersonTest){
            PersonTest o1 = (PersonTest) o;
            return Double.compare(this.age,o1.age);

        }
        throw new RuntimeException("传入数据类型不匹配");
    }

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

    public static void main(String[] args) {

        PersonTest[] arr = new PersonTest[5];
        arr [0] = new PersonTest("ak1", 20);
        arr [1] = new PersonTest("ak2", 23);
        arr [2] = new PersonTest("ak3", 14);
        arr [3] = new PersonTest("ak4", 51);
        arr [4] = new PersonTest("ak5", 32);

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

        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

运行结果:

为什么compareTo()返回了1,0,-1就能实现对象排序的功能

  • 写回答

3条回答 默认 最新

  • 关注

    看这里面的代码Arrays.sort(arr),这个方法是真正执行排序的。也可以看这篇博客 https://blog.csdn.net/github_38838414/article/details/80642329

    评论

报告相同问题?

悬赏问题

  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私