Хеш-код объекта и его адрес в памяти никак не связаны. Просто разные реализации объектов (на самом деле на разных языках) используют адрес памяти объекта как уникальный способ идентификации этого объекта.
В общем, пара методов hashCode
и equals
предоставляют средства для сравнения объектов на предмет идентичности. При реализации собственной схемы хеширования вы должны иметь в виду, что значение хеш-функции должно состоять из чего-то, что делает объект уникальным. Например, представьте, что вы предоставляете сопоставитель объектов для системы баз данных и хотите ввести объект Customer
- вы знаете, что в вашей таблице клиенты уникальны по отношению к своему первичному ключу, поэтому возврат этого первичного ключа в виде хеш-кода быть совершенно приемлемым и никак не связанным с адресом памяти объекта.
Если клиент идентифицируется с использованием его имени, фамилии и даты рождения (чего на самом деле недостаточно, чтобы однозначно идентифицировать человека, но для краткости оставим это простым), тогда вы можете хешировать эти 3 значения в хеш код и использовать его в вашей реализации отображения O / R.