Мы используем файлы cookie
Мы используем файлы cookie для улучшения работы сайта и предоставления вам персонализированного опыта. Правила использования файлов cookie можно найти в нашей политике конфиденциальности
Переопределение equals
и hashCode
важно для корректной работы с объектами в коллекциях и при сравнении.
a.equals(b)
возвращает true
, то b.equals(a)
тоже должно быть true
.a
, a.equals(a)
должно быть true
.a.equals(b)
и b.equals(c)
возвращают true
, то a.equals(c)
тоже должно быть true
.a.equals(b)
consistently return true
or consistently return false
, provided no information used in equals
comparisons on the objects is modified.Для hashCode
:
equals
на объекте, не была изменена, многократные вызовы hashCode
на объекте должны возвращать то же целочисленное значение.equals
: Если два объекта равны согласно методу equals
, то вызов hashCode
на каждом из неравных объектов должен возвращать одно и то же целочисленное значение.equals
, то вызов hashCode
на каждом из неравных объектов давал различные целочисленные результаты. Однако генерация различных хеш-кодов для неравных объектов может улучшить производительность хеш-таблиц.Нарушение этих правил приводит к непредсказуемому поведению при использовании коллекций, таких как HashSet
, HashMap
, ArrayList
и других, которые полагаются на правильную реализацию этих методов для корректного определения равенства объектов и их размещения.
Например:
java
Переопределение equals
и hashCode
важно для корректной работы с объектами в коллекциях и при сравнении.
a.equals(b)
возвращает true
, то b.equals(a)
тоже должно быть true
.a
, a.equals(a)
должно быть true
.a.equals(b)
и b.equals(c)
возвращают true
, то a.equals(c)
тоже должно быть true
.a.equals(b)
consistently return true
or consistently return false
, provided no information used in equals
comparisons on the objects is modified.Для hashCode
:
equals
на объекте, не была изменена, многократные вызовы hashCode
на объекте должны возвращать то же целочисленное значение.equals
: Если два объекта равны согласно методу equals
, то вызов hashCode
на каждом из неравных объектов должен возвращать одно и то же целочисленное значение.equals
, то вызов hashCode
на каждом из неравных объектов давал различные целочисленные результаты. Однако генерация различных хеш-кодов для неравных объектов может улучшить производительность хеш-таблиц.Нарушение этих правил приводит к непредсказуемому поведению при использовании коллекций, таких как HashSet
, HashMap
, ArrayList
и других, которые полагаются на правильную реализацию этих методов для корректного определения равенства объектов и их размещения.
Например:
java
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.