整数を格納するカレンダークラスの各日付はとにかくありますか?たとえば、6月5日に番号5を保存することができます。Javaのすべての日付のintを格納します
私は部屋の予約システムを書いていて、各予約要求には異なるID番号がありますので、この機能が欲しいです。だから私はカレンダーオブジェクトが毎日のID番号を格納するようにしたいと思います。
整数を格納するカレンダークラスの各日付はとにかくありますか?たとえば、6月5日に番号5を保存することができます。Javaのすべての日付のintを格納します
私は部屋の予約システムを書いていて、各予約要求には異なるID番号がありますので、この機能が欲しいです。だから私はカレンダーオブジェクトが毎日のID番号を格納するようにしたいと思います。
エンティティリレーションを整理するより良い方法があるといいと思います。 1日に複数の予約リクエストがある場合は、それらの予約IDすべてを日付に追加するのは意味がありません。むしろ、すべての予約で、requestedDate
と呼ばれるフィールドを持って、要求された日付を保存します。単一の日付に作成されたすべてのリクエストが必要な場合は、このフィールドを使用してリクエストをフィルタリングできます。
あなたの現在のニーズに合わせて、クラスGregorianCalendar
をサブクラス化し、この変数bookingId
をゲッタとセッタで追加することができます。
import java.util.GregorianCalendar;
public class BookingCalendar extends GregorianCalendar {
private Integer bookingId;
public Integer getBookingId() {
return bookingId;
}
public void setBookingId(Integer bookingId) {
this.bookingId = bookingId;
}
}
はこれをテストするには:あなたは(たとえば)
GregorianCalendar
の独自のサブクラスを実装していない限り、
java.util.Calendar
オブジェクト内の余分な情報を保存する方法はありません
public class CheckCal {
public static void main(String[] args) {
BookingCalendar cal = new BookingCalendar();
System.out.println(cal.getTime()); //Mon Mar 28 06:30:24 IST 2016
cal.setBookingId(25);
System.out.println(cal.getBookingId()); //25
}
}
。
あなたの例から、保存したい番号が「月の日」であると推測できれば、それを保存する必要はありません。
int dayOfTheMonth = cal.get(Calendar.DAY_OF_THE_MONTH);
そうしないと、Map
を使用して日付と番号の間の関連付けを表している必要があります。キーとして不変の日付型を使用する方が良いでしょう。例えば
Map<LocalDate, Integer> dateNumbers = new TreeMap<>();
(キータイプとしてCalendar
を使用していくつかのコードは、キーを変更するset
操作を呼び出した場合は、マップの不変条件が無効にされるだろう。)
代わりに、あなたの「カレンダー」ANに等しい場合日付の配列を作成すると、日付フィールドと数値フィールドを持つオブジェクトの配列にすることができます。例:
public class Booking {
private Room room;
private LocalDate date;
private int id;
// constructor, getters
}
public class Bookings {
// data structures representing all bookings, possibly
// with maps for fast lookups.
// methods for looking up bookings by id, date, room
// methods for adding/removing/updating bookings
// methods finding free rooms for a given day or day range
}
これはなぜ必要なのか説明できますか。 – Ram
ようこそStackOverflowへ。私たちは、あなたがやろうとしていることとそれをどうやって実装するのかをよりよく知るために、あなたの質問にもっと詳細を加えることを検討してください。コード例は素晴らしいでしょう。もちろん、それは可能ですが、詳細がなければ、あなたを助けるための実用的な例を提供するのは難しいです。 – drew010