2

クラス DateTime (GregorianCalendar をラップする) を作成しました。クラス Event も作成しました。日付でイベントを取得できるイベントのコレクションを作成したいと考えています。例: event は Event 型です。date1 と date2 は DateTime 型であり、date1.equals(date2); 'events' は私のイベント コレクションです。

event.put(date1, event)

コレクションに「イベント」を追加して、取得できるようにします

event.get(date2)

このイベント コレクションを実装するために TreeMap を使用することを考えています。

では、DateTime を TreeMap のキーに設定するにはどうすればよいでしょうか。DateTime には何を追加すればよいですか? 他に何をすべきか?ありがとう。

4

2 に答える 2

9

あなたはただ道具を持っている必要がありDateTimeますComparable<DateTime>、それは次のようなものです:

class DateTime implements Comparable<DateTime> {
  GregorianCalendar calendar;

  ...

  public int compareTo(DateTime other) {
    if (calendar.equals(other.calendar))
      return 0;
    else if (calendar.before(other.calendar))
      return -1;
    else
      return 1;
  }
}

Comparableインターフェースはここに文書化されています

于 2010-01-12T17:04:42.990 に答える
5

2つの方法があります:

  1. DateTimeにComparable <DateTime>を実装させます。compareTo()メソッドを定義します。

  2. Comparator <DateTime>を実装するクラス(匿名の場合もあります)を定義します。必要に応じて、compare()メソッドを定義します。そのクラスのインスタンスをTreeMapのコンストラクターに渡します。

于 2010-01-12T17:06:59.583 に答える