Объект Hasher
будет избыточным для метода hashCode()
в классе Object
.
Если вы хотите повлиять на характер хеширования, вы должны переопределитьметод hashCode()
, определенный для Object
.Просто обязательно переопределите также equals(Object)
, поскольку эти два всегда должны идти вместе.
A HashSet
или другая подобная структура данных будет использовать метод objects hashCode()
, чтобы получить значение хеша для определения binместо хранения.Затем он будет использовать equals()
для сравнения этого объекта с другими объектами в той же корзине для определения равенства.
Сгенерированный хеш-код должен быть уникальным для этого конкретного класса объектов.Это может быть обеспечено простым переопределением метода hashCode()
и не требует перехода от реализации к реализации.Объект Hasher
просто запутывает и не служит никакой дополнительной цели.Я не мог придумать ни одного случая использования, когда для хранения в разных структурах данных потребовалось бы несколько хеш-кодов.