2014-01-02 6 views
-1

Почему мы всегда должны переопределять метод hashCode() всякий раз, когда мы переопределяем метод equals()? По моему пониманию они оба, похоже, выполняют разные цели. Метод hashCode() используется в hashtables для определения равенства ключей. Однако метод equals() используется для определения равенства двух объектов.Почему мы должны переопределять hashcode() при переопределении метода equals()?

+0

Оба ваших утверждения несколько ошибочны. Этот вопрос задавали сотни раз раньше; вы получите больше информации с помощью Google. –

+0

Просто потому, что 2 значения хэша одинакового значения не означают, что они равны, вам нужно также проверить, равны ли они. – Dukeling

+0

Вам не нужно переопределять оба варианта, но на самом деле это очень легко сделать, поскольку современные IDE поддерживают создание кода для обоих из них. –

ответ

1

Если два объекта равны в соответствии с методом equals, их хэш-коды также должны быть равны. В противном случае поиск в хэш-таблице завершится неудачно.

Смежные вопросы