我们为什么需要compareTo()?
数据,是可以比较大小的,比如:2大于1。那么我们自己写的类,也是一种引用数据类型,可以不可以自定义规则,让它也能有大小的比较呢?
这时候,就需要重写compareTo()方法来实现大小的比较。
compareTo()的重写
compareTo与toString()等方法不同,它并不是在Object类中定义的,因为毕竟不是所有的类都需要比较大小嘛。
要想类可以比较大小,我们需要让类继承Comparable接口,然后实现该接口中的compareTo()方法,实例:
class Student implements Comparable<Student> {
private Integer id;
private String name;
private Integer age;
@Override
public int compareTo(Student o) { // 负数:小于 整数:大于 零:等于
if (this.id > o.id) {
return 1;
} else if (this.id < o.id) {
return -1;
} else {
return 0;
}
}
public Student(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
public class Test {
public static void main(String args[]) {
Student s1 = new Student(1,"小猪",18);
Student s2 = new Student(2,"小猫",25);
System.out.println(s1.compareTo(s2));
}
}
-------------------------------------
输出结果为:
-1
根据Java的规定,比较对象比传入参数小时,结果返回负数,等于时返回0,大于时返回正数。
在使用可排序集合,如TreeMap、TreeSet时,集合中的元素类必须要实现compareTo()方法。