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就能实现对象排序的功能
看这里面的代码Arrays.sort(arr),这个方法是真正执行排序的。也可以看这篇博客 https://blog.csdn.net/github_38838414/article/details/80642329
@Override
public int compareTo(Object o) {
if (o instanceof PersonTest){
PersonTest o1 = (PersonTest) o;
//return this.age - o1.age; //此处返回的是一个int数据类型
//或者使用以下方式, 对比的是int类型 而不是double类型
return Integer.compare(this.age,o1.age);
//以上两种方式都可以实现排序对比
}
throw new RuntimeException("传入数据类型不匹配");
}
您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您可以仔细阅读看是否解决了您的问题。
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~