解释说:为排序将对象与指定的对象进行比较,根据比较的结果是小于,等于或者是大于而返回一个负数,零或者正数。
但是我搞不懂,这里面的对象与指定对象分别指的是什么啊?
用Arrays.sort(ss)排序,ss是个数组,里面的元素都是一个类的对象,
现在这个类必须实现Comparable接口,以及重写compareto(),才能用sort,
但是int compareTo(Object o)中的o到底是什么啊?两个相比较的对象到底是哪两个?
但是我搞不懂,这里面的对象与指定对象分别指的是什么啊?
用Arrays.sort(ss)排序,ss是个数组,里面的元素都是一个类的对象,
现在这个类必须实现Comparable接口,以及重写compareto(),才能用sort,
但是int compareTo(Object o)中的o到底是什么啊?两个相比较的对象到底是哪两个?
楼主【sasami615】截止到2008-07-11 11:05:35的历史汇总数据(不包括此帖):
发帖的总数量:10 发帖的总分数:320 每贴平均分数:32
回帖的总数量:6 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:4 结贴的总分数:70
无满意结贴数:0 无满意结贴分:0
未结的帖子数:6 未结的总分数:250
结贴的百分比:40.00 % 结分的百分比:21.88 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
楼主该结一些帖子了
ss[1].number为2
ss[2].number为1
按number来排序,Array.sort(ss),
重写compareTo(Object o),
那么这里的这个对象o是什么?这个o又是在和谁比较?
举个例子嘛
return this.age - ((Person) person).getAge();
}
它只有一个参数o,而且这个o代表的是传递进来的实例吗?这个o到底和谁在比较。
this.age 当前对象的age
((Person) person).getAge() 传进来对象的Age
这样不是就又了两个对象了吗?一个是调用这个方法本身的对象,另一个是传入的对象。
在你的代码Arrays.sort(ss)中,ss是对象,这个对象必须实现Comparable接口才能进行比较,也就是说对象ss必须重写compareto()方法,
那么现在ss就又compareto方法了。在进行sort的时候就会调用这个方法进行比较。
你这里的ss是一个数组,那么就是说ss数组中的元素都是ss对象。
public class ss implements Comparable{
//ss类的构造方法以及其他方法
public int compareTo(Object o) {
//语句
}
}
ss a1 = new ss();
ss a2 = new ss();
ss a3 = new ss();
ss a4 = new ss();
ss[] bb = new ss[]{a1, a2, a3, a4};
Arrays.sort(bb);
在进行排序的时候会调用ss的compatrto方法,实际过程中就会出现a1.compareto(a2)
不知道这样解释是否清楚。
ss是个数组,里面三个对象都要和调用compareto的对象来比较吗?
然后这三个对象都要分别调用compareto这个方法一次吗?
class ByChangDu implements Comparable{
private String Chuan;
public ByChangDu(String zifu){
Chuan=zifu;
}
public int compareTo(Object o){
ByChangDu it=(ByChangDu)o;
return this.Chuan.length()-it.Chuan.length();
//return this.Chuan.compareTo(it.Chuan);
}
public String toString(){
return Chuan;
}
}
public class ByChangDuDemo{
public static void main(String args[]){
ByChangDu YiZuChuan[]={new ByChangDu("abc"),
new ByChangDu("xy"),
new ByChangDu("xinshuguang"),
new ByChangDu("www."),
new ByChangDu("12")
};
Arrays.sort(YiZuChuan);
for(int i=0;i<YiZuChuan.length;i++){
System.out.println(YiZuChuan[i]);
}
}
}