以下这段程序请高手解释下
public class tct implements Comparable{
    int i,j;
    public tct(int c,int d){
        i=c;
        j=d;
    }
    public int compareTo(Object x) {
        int rvi=((tct)x).i;
        return (i<rvi?-1:(i==rvi?0:1));
     }
     public String toString(){
         return "(i)"+i+"(j)"+j+"  ";
     }
    public static void main(String[] args) {
     tct[] f=new tct[10];
     Random r=new Random();
     for(int b=0;b<f.length;b++)
     {
     f[b]=new tct(r.nextInt(100),r.nextInt(100));
     }
      Arrays.sort(f);
       for(int e=0;e<f.length;e++)
       {
         System.out.print(f[e]);
       } 
    }
}主要是这个方法里为什么要这样写 我不太理解
 public int compareTo(Object x) {
        int rvi=((tct)x).i;
        return (i<rvi?-1:(i==rvi?0:1));
     }

解决方案 »

  1.   

    public int compareTo(Object x) { 
        int rvi=((tct)x).i;              //取数
        return (i <rvi?-1:(i==rvi?0:1)); //返回,至于返回什么,Comparable里有规定。
    }
      

  2.   

    public class tct implements Comparable
        int i,j; 
        public tct(int c,int d){ 
            i=c; 
            j=d; 
        } 
        public int compareTo(Object x) { 
            int rvi=((tct)x).i; 
            return (i <rvi?-1:(i==rvi?0:1)); 
         } 
         public String toString(){ 
             return "(i)"+i+"(j)"+j+"  "; 
         } 
        public static void main(String[] args) { 
         tct[] f=new tct[10]; 
         Random r=new Random(); 
         for(int b=0;b <f.length;b++) 
         { 
         f[b]=new tct(r.nextInt(100),r.nextInt(100)); 
         } 
          Arrays.sort(f); 
           for(int e=0;e <f.length;e++) 
           { 
             System.out.print(f[e]); 
           }  
        } 

    注意红色部分,你实现了Comparable接口,只有实现了这个接口才可以使用数组提供的排序Arrays.sort(f); ,实现接口的类要实现里面全部的方法,这个接口只有一个方法,就是compareTo,你的这个实现只是比较了两个对象的i值。
      

  3.   

     public int compareTo(Object x) {
            int rvi=((tct)x).i;                                //Object类型强制转换成tct类型的,否则无法调用到字段i
            return (i <rvi?-1:(i==rvi?0:1));                   //其实就是this.i 与 ((tct)x).i的问号表达式
         }                                                     //compareTo方法返回值是 -1:小于  0:等于  1:大于
                                                               //可以看到里面用了2个问号表达式来判定确切值
      

  4.   


    主要是这个方法里为什么要这样写 我不太理解 
     public int compareTo(Object x) { //实现Comparable接口的方法!
            int rvi=((tct)x).i; //因为传进来的x时object类型,所以先转型为tct类型后再用!
            return (i <rvi?-1:(i==rvi?0:1)); //假如i<rvi 那就返回-1,否则返回(i==rvi?0:1))
                                            //假如i==rvi,那就返回0,否则返回1
         } 
      

  5.   

    public int compareTo(Object x) { 
            int rvi=((tct)x).i; 
            return (i <rvi?-1:(i==rvi?0:1)); 
         } 
    中的Object x  是从哪传入的呢?