比较多个日期大小,并对这些日期进行排序

算法分析:

  1.     public int compare(Date date)
  2.     {
  3.         /*
  4.          * 1表示大于,0表示等于,-1表示小于 如果传入的年,大于当前的年,返回1,否则返回-1;
  5.          * 如果传入的月,大于当前的月,返回1,否则返回-1; 如果传入的日,大于当前的日,返回1,否则返回-1;
  6.          */
  7.         return year > date.year ? 1 : year < date.year ? -1
  8.                 : month > date.month ? 1 : month < date.month ? -1
  9.                         : day > date.day ? 1 : day < date.day ? -1 : 0;
  10.     }

 

以下用例子测试

  1. /*
  2.  * 比较多个日期大小,并对日期进行排序
  3.  */
  4. public class TestDate
  5. {
  6.     public static void main(String[] args)
  7.     {
  8.         Date[] days = new Date[10];
  9.         days[0] = new Date(200889);
  10.         days[1] = new Date(2008820);
  11.         days[2] = new Date(200789);
  12.         days[3] = new Date(2007119);
  13.         days[4] = new Date(200689);
  14.         days[5] = new Date(200689);
  15.         days[6] = new Date(200589);
  16.         days[7] = new Date(200599);
  17.         days[8] = new Date(200589);
  18.         days[9] = new Date(200999);
  19.         Date.buffSort(days);
  20.         for (int i = 0; i < days.length; i++)
  21.         {
  22.             System.out.println(days[i]);
  23.         }
  24.     }
  25. }
  26. // 比较日期大小
  27. class Date
  28. {
  29.     int year;
  30.     int month;
  31.     int day;
  32.     public Date(int y, int m, int d)
  33.     {
  34.         this.year = y;
  35.         this.month = m;
  36.         this.day = d;
  37.     }
  38.     public int compare(Date date)
  39.     {
  40.         /*
  41.          * 1表示大于,0表示等于,-1表示小于 如果传入的年,大于当前的年,返回1,否则返回-1;
  42.          * 如果传入的月,大于当前的月,返回1,否则返回-1; 如果传入的日,大于当前的日,返回1,否则返回-1;
  43.          */
  44.         return year > date.year ? 1 : year < date.year ? -1
  45.                 : month > date.month ? 1 : month < date.month ? -1
  46.                         : day > date.day ? 1 : day < date.day ? -1 : 0;
  47.     }
  48.     // 用冒泡算法排序
  49.     public static Date[] buffSort(Date[] dates)
  50.     {
  51.         Date temp;
  52.         for (int i = dates.length - 1; i > 0; i--)
  53.         {
  54.             for (int j = 0; j < i - 1; j++)
  55.             {
  56.                 if (dates[j].compare(dates[j + 1]) > 0)
  57.                 {
  58.                     temp = dates[j];
  59.                     dates[j] = dates[j + 1];
  60.                     dates[j + 1] = temp;
  61.                 }
  62.             }
  63.         }
  64.         return dates;
  65.     }
  66.     // 重写toString方法
  67.     public String toString()
  68.     {
  69.         return year + "-" + month + "-" + day;
  70.     }
  71. }

运行结果:

 

2005-8-9
2005-8-9
2005-9-9
2006-8-9
2006-8-9
2007-8-9
2007-11-9
2008-8-9
2008-8-20
2009-9-9

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值