public class TestDateSort {
public static void main(String[] args) {
Date[] days = new Date[5];
days[0] = new Date(2006, 5, 4);
days[1] = new Date(2006, 7, 4);
days[2] = new Date(2008, 5, 4);
days[3] = new Date(2004, 5, 9);
days[4] = new Date(2004, 5, 4);

bubbleSort(days);

for(int i=0; i<days.length; i++) {
System.out.println(days[i]);
}

}

 public static Date[] bubbleSort(Date[] a){
        int len = a.length;
        for(int i = len-1;i>=1;i--){
            for(int j = 0;j<=i-1;j++){
                if(a[j].compare(a[j+1]) > 0){
                    Date temp = a[j]; 
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        return a;
    }
    
}class Date {
  int year, month, day;
  
  Date(int y, int m, int d) {
    year = y; month = m; day = d;
  }
  
  public int compare(Date date) {
    return year > date.year ? 1
           : year < date.year ? -1
           : month > date.month ? 1
           : month < date.month ? -1
           : day > date.day ? 1
           : day < date.day ? -1 : 0;
  }
  public String toString() {
   return "Year:Month:Day -- " + year + "-" + month + "-" + day;
  }
  
}
这是代码 我目前不明白if(a[j].compare(a[j+1]) > 0)这句话  是怎么和class Date 起到联系的 并将数组排序

解决方案 »

  1.   

    1 整数的冒泡排序应该懂得吧,这个如果不懂的话,网上搜一搜,有好多,按步骤走一个例子就懂了。
    2 public int compare(Date date)这个函数的作用应该能看懂吧
    这两个懂,应该没其他问题啊。。最简单的方法就是你自己按步骤把这个程序走一遍,就懂了。
      

  2.   

    我就是看不明白 public int compare(Date date) 这个 和上面的程序有什么关联 a[j].compare(a[j+1])  是什么意思 
      

  3.   

    a[j].compare(a[j+1])  判断日期的大小
      

  4.   


    Date 类里定义了一个比较大小的方法。就是: public int compare(Date date) {
        return year > date.year ? 1
               : year < date.year ? -1
               : month > date.month ? 1
               : month < date.month ? -1
               : day > date.day ? 1
               : day < date.day ? -1 : 0;
      }
    就是用当前对象(就是a[j],因为用它去调用compare方法)和方法里传进来的对象(a[j+1])比较。
    比较的原则是,年数大,返回1,年数小-1;年相等的话,看月,月大返回1,月小返回-1;年月都相等看日期,日期大,返回1,日期小返回-1,相等 返回0。再就是冒泡的两个循环,楼主可以多加几条输出语句,细细看看,就会明白。
      

  5.   

    这个Date类楼主代码里的。不是java自带的类库!
      

  6.   

    a[j].compare(a[j+1])   这不就是简单的方法调用么,方法传参、返回值知道撒。
      

  7.   

    很明显a[j].compare(a[j+1])调用了public int compare(Date date) ,比较日期大小如果a[j].compare(a[j+1])  > 0,说明a[j] > a[j+1] 
      

  8.   

    Date[] days = new Date[5];这个Date类是自定义的类
      

  9.   

    多调试调试代码,慢慢看,多看就好了~
    有个学java的应用,java学习手册,挺不错的,新手可以多看看