CompareTO(Object o)方法的重写及其用于排序的原理

CompareTo()方法是java.lang.Comparable接口的一个抽象方法。

其方法的主要作用是根据依据比较 对象的大小,比如Integer型,比较的是数值的大小,String形等,

调用这个方法的对象比 形参对象大的话返回 1 比形参小的话 返回 -1 等于 形参的话 返回 0

根据返回的值就可以确定两个对象的大小 进而进行排列。

注:当在重写CompareTo()方法比较String 等非数值类型属性的大小时。我们可以直接借用String 方法中的 CompareTo()方法来比较。

向TreeSet中添加元素时,首先按照compareTo的方法进行比较,一旦返回0,虽然仅是两个对象的此属性

值相同,但是程序扔会认为这个对象是相同的,进而后一个对象进不来。

如:

代码语言:javascript代码运行次数:0运行复制public int compareTo(Object o){

if(o instanceof Person){

Person p = (Person)o;

return this.name.compareTo(p.name);//这里就借用String中的CompareTo()方法来比较String类型的

//的大小

}

return 0;

}所以我们要比较另一个属性的大小

代码语言:javascript代码运行次数:0运行复制public int compareTo(Object o) {

if(o instanceof Person) {

Person p = (Person)o;

int i = this.name.compareTo(p.name);

if(i == 0) {

return this.age.compareTo(p.age);

}else {

return i;

}

}return 0;

}

}