Хеш-код xmlgregoriancalendar не обрабатывает миллисекунды
Я пытаюсь хешировать свой объект:
protected XMLGregorianCalendar startTime;
значение getStartTime() равно 2018-06-21T12:04:10.000Z
Метод hashCode в нижней части XMLGregorianCalendar не обрабатывает миллисекунды, поэтому я никогда не получу уникальный hashCode, даже когда я использую startTime с другим значением для миллисекунд, например 2018-06-21T12: 04: 10.111Z
И 2018-06-21T12:04:10.000Z, и 2018-06-21T12: 04: 10.111Z приводят к одному и тому же хэш-коду, если только я не изменяю секунды, минуты, часы и т. Д., И т. Д. Мне нужно также учитывать миллисекунды,
Есть ли другой метод hashCode(), который будет обрабатывать это? Как я могу сделать это?
public int hashCode() {
// Following two dates compare to EQUALS since in different timezones.
// 2000-01-15T12:00:00-05:00 == 2000-01-15T13:00:00-04:00
//
// Must ensure both instances generate same hashcode by normalizing
// this to UTC timezone.
int timezone = getTimezone();
if (timezone == DatatypeConstants.FIELD_UNDEFINED) {
timezone = 0;
}
XMLGregorianCalendar gc = this;
if (timezone != 0) {
gc = this.normalize();
}
return gc.getYear()
+ gc.getMonth()
+ gc.getDay()
+ gc.getHour()
+ gc.getMinute()
+ gc.getSecond(); //Where's milliseconds???
}