1. 自定义类比较
Person
public class Person{
String name;
int score;
Person(String name, int score) {
this.name = name;
this.score = score;
}
@Override
public String toString() {
return this.name + "," + this.score;
}
}
TestMain1
public class TestMain1
{
public static void main(String[] args) {
Person[] ps = new Person[] {
new Person("Bob", 61),
new Person("Alice", 88),
new Person("Lily", 75),
};
Arrays.sort(ps);
System.out.println(Arrays.toString(ps));
}
}
运行结果:因为我们的Person类无法进行Comparable转换出错。
Exception in thread "main" java.lang.ClassCastException: com.luoyu.aiyu.luo1.Person cannot be cast to java.lang.Comparable
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
at java.util.Arrays.sort(Arrays.java:1246)
at com.luoyu.aiyu.luo1.TestMain1.main(TestMain1.java:14)
修改后的Person类
public class Person implements Comparable<Person>{
String name;
int score;
Person(String name, int score) {
this.name = name;
this.score = score;
}
@Override
public String toString() {
return this.name + "," + this.score;
}
@Override
public int compareTo(Person o) {
return this.name.compareTo(o.name);
}
}
然后执行正常。。。
2. Integer 关于Comparable的实现理解
1. 首先Integer 实现了Comparable<Integer>
2. 可以看到Comparable里面只有一个方法compareTo()
3. 这里就是compareTo的实现了。