хеш-код xmlgregoriancalendar не обрабатывает миллисекунды - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь хэшировать свой объект:

protected XMLGregorianCalendar startTime;

значение getStartTime () равно 2018-06-21T12: 04: 10.000Z

hashCodeМетод в нижней части XMLGregorianCalendar не обрабатывает миллисекунды, поэтому я никогда не получу уникальный хэш-код, даже когда я использую 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???
    }
...