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 起到联系的 并将数组排序
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 起到联系的 并将数组排序
2 public int compare(Date date)这个函数的作用应该能看懂吧
这两个懂,应该没其他问题啊。。最简单的方法就是你自己按步骤把这个程序走一遍,就懂了。
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。再就是冒泡的两个循环,楼主可以多加几条输出语句,细细看看,就会明白。
有个学java的应用,java学习手册,挺不错的,新手可以多看看