解释说:为排序将对象与指定的对象进行比较,根据比较的结果是小于,等于或者是大于而返回一个负数,零或者正数。
但是我搞不懂,这里面的对象与指定对象分别指的是什么啊?
用Arrays.sort(ss)排序,ss是个数组,里面的元素都是一个类的对象,
现在这个类必须实现Comparable接口,以及重写compareto(),才能用sort,
但是int compareTo(Object o)中的o到底是什么啊?两个相比较的对象到底是哪两个?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【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  %                  
    楼主该结一些帖子了
      

  2.   

    Object  是 java中的原始祖宗 ~~~~~Object  o  中的  o代表任何继承自 Object  类的实例。在java中表示任何对象~~
      

  3.   

    ss[0].number为3
    ss[1].number为2
    ss[2].number为1
    按number来排序,Array.sort(ss),
    重写compareTo(Object o),
    那么这里的这个对象o是什么?这个o又是在和谁比较?
    举个例子嘛
      

  4.   

     public int compareTo(Object person) {
            return this.age - ((Person) person).getAge();
        }
      

  5.   

    算了,换个问法,compareto是怎么实现两个对象相比较的?
    它只有一个参数o,而且这个o代表的是传递进来的实例吗?这个o到底和谁在比较。
      

  6.   

    我给你的例子中很明显啊.o代表的是传递进来的对象.要和本身进行比较.
    this.age 当前对象的age
    ((Person) person).getAge()  传进来对象的Age
      

  7.   

    int compareTo(Object o)是一个方法,那么这个方法一定是属于某个对象的,方法的参数是Object类型的,这里的o就是传给这个方法的对象。
    这样不是就又了两个对象了吗?一个是调用这个方法本身的对象,另一个是传入的对象。
    在你的代码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)
    不知道这样解释是否清楚。
      

  8.   

    楼上的意思就是说,Arrays.sort(ss)中,
    ss是个数组,里面三个对象都要和调用compareto的对象来比较吗?
    然后这三个对象都要分别调用compareto这个方法一次吗?
      

  9.   

    import java.util.*;
    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]);
                  }
              }
    }
                   
                    
      

  10.   

    是的,三个对象都要调用compareto方法一次,建议你可以看一下Arrays类的源代码,你就明白了!