无论如何,Calendar类中的每个日期都存储整数吗?例如,6月5日可以存储数字5。
我想要这个功能,因为我正在为房间编写预订系统,每个预订请求都有不同的身份证号码。所以我想要一个日历对象来存储每天的ID号。
答案 0 :(得分:0)
我希望有更好的方法来组织您的实体关系。
如果您在一天内有多个预订请求,那么将所有预订ID添加到该日期是没有意义的。相反,在每个预订中,都有一个名为requestedDate
的字段,并将所请求的日期存储起来。当您需要在单个日期发出的所有请求时,您可以使用此字段对其进行过滤。
根据您当前的需要,您可以使用子类GregorianCalendar
类,并使用getter和setter添加此变量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;
}
}
测试一下:
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
}
}
答案 1 :(得分:0)
除非您实现自己的(例如)java.util.Calendar
的子类,否则无法在GregorianCalendar
对象中存储额外信息。
如果我们可以从您的示例中推断出您要存储的号码是“每月的某天”,那么您无需存储它。
int dayOfTheMonth = cal.get(Calendar.DAY_OF_THE_MONTH);
否则,您应使用Map
表示日期和数字之间的关联。最好使用不可变日期类型作为键; e.g。
Map<LocalDate, Integer> dateNumbers = new TreeMap<>();
(如果您使用Calendar
作为键类型,而某些代码称为set
操作来更改键,则地图的不变量将无效。)
或者,如果您的“日历”等同于日期数组,则可以将其设为具有日期字段和数字字段的对象数组。例如:
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
}