Для корректной работы коллекций и других механизмов, основанных на сравнении объектов (например, HashMap
, HashSet
), необходимо соблюдать следующие правила:
equals
): Для любой ненулевой ссылки x
, x.equals(x)
должно возвращать true
.equals
): Для любых ненулевых ссылок x
и y
, x.equals(y)
должно возвращать true
только в том случае, если y.equals(x)
возвращает true
.equals
): Для любых ненулевых ссылок x
, y
и z
, если x.equals(y)
возвращает true
и y.equals(z)
возвращает true
, то x.equals(z)
должно возвращать true
.equals
): Для любых ненулевых ссылок x
и y
, многократный вызов x.equals(y)
должен последовательно возвращать true
или последовательно возвращать false
при условии, что никакая информация, используемая в сравнениях equals
на объектах, не была модифицирована.equals
и null
: Для любой ненулевой ссылки x
, x.equals(null)
должно возвращать false
.equals
и hashCode
: Если x.equals(y)
возвращает true
для любых двух ненулевых ссылок x
и y
, то вызов x.hashCode()
должен возвращать то же значение, что и вызов y.hashCode()
.hashCode
: Многократный вызов `Для корректной работы коллекций и других механизмов, основанных на сравнении объектов (например, HashMap
, HashSet
), необходимо соблюдать следующие правила:
equals
): Для любой ненулевой ссылки x
, x.equals(x)
должно возвращать true
.equals
): Для любых ненулевых ссылок x
и y
, x.equals(y)
должно возвращать true
только в том случае, если y.equals(x)
возвращает true
.equals
): Для любых ненулевых ссылок x
, y
и z
, если x.equals(y)
возвращает true
и y.equals(z)
возвращает true
, то x.equals(z)
должно возвращать true
.equals
): Для любых ненулевых ссылок x
и y
, многократный вызов x.equals(y)
должен последовательно возвращать true
или последовательно возвращать false
при условии, что никакая информация, используемая в сравнениях equals
на объектах, не была модифицирована.equals
и null
: Для любой ненулевой ссылки x
, x.equals(null)
должно возвращать false
.equals
и hashCode
: Если x.equals(y)
возвращает true
для любых двух ненулевых ссылок x
и y
, то вызов x.hashCode()
должен возвращать то же значение, что и вызов y.hashCode()
.hashCode
: Многократный вызов `Register or sign in to get access to full answers for all questions from the question bank.