Разница между хеш-кодом и ссылкой или адресом объекта? - PullRequest
5 голосов
/ 13 сентября 2010

разница между хеш-кодом и ссылкой или адресом объекта?

Ответы [ 3 ]

4 голосов
/ 13 сентября 2010

В JavaME эти три вещи не связаны.

hashCode объекта является полууникальным идентификатором для него.

Ссылка на объект является дескриптором области действия для этого объекта.

Адрес объекта (вероятно) недоступен и, безусловно, бесполезен.

0 голосов
/ 13 сентября 2010

Хеш-код объекта и его адрес в памяти никак не связаны. Просто разные реализации объектов (на самом деле на разных языках) используют адрес памяти объекта как уникальный способ идентификации этого объекта.

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

Если клиент идентифицируется с использованием его имени, фамилии и даты рождения (чего на самом деле недостаточно, чтобы однозначно идентифицировать человека, но для краткости оставим это простым), тогда вы можете хешировать эти 3 значения в хеш код и использовать его в вашей реализации отображения O / R.

0 голосов
/ 13 сентября 2010

Адрес / ссылка на объект указывает на место в памяти, в котором живет Объект.

Хеш-код генерируется с помощью алгоритма хеширования и используется для идентификации объектов в хэш-коллекции. Разные алгоритмы будут давать разные коды (плохие алгоритмы приведут к плохим хеш-кодам и большему количеству коллизий в коллекции).

...