import java.util.Arrays;
class Point implements Comparable{
int i ,s;
Point(int i,int s){
this.i = i;
this.s = s;
}
public int compareTo(Object o){ //在这里,下面的程序似乎并没有调用这个方法,但是这个方法还是被调用了,为什么?
Point p =(Point)o;
int index=i>p.i?1:(i==p.i?0:-1);
if(index==0){
index=s>p.s?1:(s==p.s?0:-1);
}
return index;
}
public String toString(){
return i+" "+s;
}
}
class Shiyan{
public static void main(String [] args){
Point []arr = new Point[]{new Point(1,2),
                                          new Point(3,4),
  new Point(3,5),
  new Point(2,2)};
Arrays.sort(arr);
for(int num=0;num<arr.length;num++){
System.out.println(arr[num]);
}
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【shanber】截止到2008-07-25 20:56:08的历史汇总数据(不包括此帖):
    发帖的总数量:6                        发帖的总分数:20                       每贴平均分数:3                        
    回帖的总数量:9                        得分贴总数量:3                        回帖的得分率:33%                      
    结贴的总数量:4                        结贴的总分数:0                        
    无满意结贴数:4                        无满意结贴分:80                       
    未结的帖子数:2                        未结的总分数:20                       
    结贴的百分比:66.67 %               结分的百分比:0.00  %                  
    无满意结贴率:100.00%               无满意结分率:---------------------
    楼主加油
      

  2.   

    compareTo()方法会在对象作比较时自动调用的。
      

  3.   

    Arrays.sort(arr); 
    排序的时候当然会比较了.
      

  4.   

    Arrays.sort(arr); 方法排序就是使用你arr中对象实现的compareTo方法返回的结果来排序的。如果你不实现这个方法,你就要使用Arrays.sort(arr,compator)这个方法来实现。
      

  5.   

    Arrays.sort(arr); 
    会调用的
      

  6.   

    Collection.sort()方法也会调用的
    只不过一个用于数组
    一个用语集合罢了
    关于 interface comparator 的实现方法签名
    public int compare(Object obj,Object obj);
      

  7.   

        public static void sort(Object[] a) {
            Object[] aux = (Object[])a.clone();
            mergeSort(aux, a, 0, a.length, 0);
        }
    上面是Arrays.sort的源码,mergeSort方法里会调用a数组对象里的compareTo方法排序: // Insertion sort on smallest arrays
            if (length < INSERTIONSORT_THRESHOLD) {
                for (int i=low; i<high; i++)
                    for (int j=i; j>low &&
     ((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
                        swap(dest, j, j-1);
                return;
            }
      

  8.   

    如果是用.equals()比较两个自定义类就覆盖comparto(),