自己写个排序方法啊
import java.util.*;
public class MyDate implements Comparable {
    private int year;
    private int month;
    private int day;
    public MyDate(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public int getDay() {
        return day;
    }
    public int getMonth() {
        return month;
    }
    public int getYear() {
        return year;
    }
    public String toString() {
        return year + "-" + month + "-" + day;
    }
    public int hashCode() {
        int result;
        result = year;
        result = 29 * result + month;
        result = 29 * result + day;
        return result;
    }
    /*public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof MyDate)) return false;
        final MyDate myDate = (MyDate) o;
        if (day != myDate.day) return false;
        if (month != myDate.month) return false;
        if (year != myDate.year) return false;
         return true;
    } */
    public int compareTo(Object o) {
        if (this == o) return 0;
        if (!(o instanceof MyDate)) return 0;
        final MyDate myDate = (MyDate) o;
        if (year > myDate.year) return 1;
        if (year < myDate.year) return -1;
        if (month > myDate.month) return 1;
        if (month < myDate.month) return -1;
        if (day > myDate.day) return 1;
        if (day < myDate.day) return -1;
        return 0;
    }
    public static void main(String[] args) {
        MyDate d1 = new MyDate(2003, 9, 1);
        MyDate d2 = new MyDate(2003, 9, 2);
        MyDate d3 = new MyDate(2003, 9, 3);
        MyDate d4 = new MyDate(2003, 9, 4);
        MyDate d5 = new MyDate(2003, 9, 5);
        MyDate d6 = new MyDate(2003, 9, 5);
        Set s =   new TreeSet();
        s.add(d1);
        s.add(d2);
        s.add(d3);
        s.add(d4);
        s.add(d5);
        s.add(d6);
        MyDate[] t = new MyDate[0];
        MyDate[] ms = (MyDate[])s.toArray(t);
        for(int i = 0; i < ms.length; i++){
            System.out.println(ms[i]);
        }希望对楼主有帮助

解决方案 »

  1.   

    用TreeSet,但是并不是与加入的次序一样,而是用Comparator()来做比较.如果要是与加入的次序一样,用Vector,但你须比较是否该元素已经被加入了.
      

  2.   

    MyDate dd1 = new MyDate(2001, 3, 1);
            MyDate dd2 = new MyDate(2001, 2, 4);
            MyDate dd3 = new MyDate(2001, 1, 2);
            MyDate dd4 = new MyDate(2001, 4, 5);
            MyDate dd5 = new MyDate(2001, 2, 1);
            MyDate dd6 = new MyDate(2001, 1, 1);        List l = new ArrayList();
            l.add(dd1);
            l.add(dd2);
            l.add(dd3);
            l.add(dd4);
            l.add(dd5);
            l.add(dd6);
             Collections.sort(l, new Comp2());    //Collections.sort(I);
            System.out.println(l);
    import java.util.*;
    public class Comp2 implements Comparator {
        public int compare(Object o1, Object o2) {
            if (!(o1 instanceof MyDate)) return -1;
            if (!(o2 instanceof MyDate)) return -1;
            if (o1 == o2) return 0;
            final MyDate myDate1 = (MyDate) o1;
            final MyDate myDate2 = (MyDate) o2;
            if (myDate1.getMonth() > myDate2.getMonth()) return 1;
            if (myDate1.getMonth() < myDate2.getMonth()) return -1;
            if (myDate1.getYear() > myDate2.getYear()) return 1;
            if (myDate1.getYear() < myDate2.getYear()) return -1;
            if (myDate1.getDay() > myDate2.getDay()) return 1;
            if (myDate1.getDay() < myDate2.getDay()) return -1;
            return 0;
        }
    }
      

  3.   

    如果你只是想实现顺序读取的话,用ArrayList就行啦
      

  4.   

    对啊,为什么一定要用set呢?