два ключа одинаковые hashMap over write "существующий? - PullRequest
1 голос
/ 17 декабря 2010

Как именно хеш-карта хранит данные внутренне ... Я знал, что она вычислит значение ключа HashCode и сохранит его. Если два ключа имеют одинаковый хеш-код, они будут помещены в одну корзину. Но почему, если «два ключа - это один и тот же hashMap over write», существующий?

Ответы [ 5 ]

9 голосов
/ 17 декабря 2010

Ну, вот для чего он предназначен.Это отображение пар ключ / значение, где любой ключ связан со значением 0 или 1.Если вы наберете put второе значение для ключа, запись для этого ключа будет заменена.

Хотя он не основан только на хеш-коде - он также проверит ключи на равенство.Два ключа могут быть неравными, но иметь одинаковый хэш-код.Важно то, что два одинаковых ключа должны иметь одинаковый хэш-код.

Если вы хотите сохранить несколько значений для одного ключа, вам следует использовать что-то вроде Multimap * в Guava1009 *.

4 голосов
/ 17 декабря 2010

Значение не будет перезаписано, если hashCode() совпадает.Он будет перезаписан, только если они равны по методу равно .

3 голосов
/ 17 декабря 2010

См. http://en.wikipedia.org/wiki/Hash_table и http://www.docjar.com/html/api/java/util/HashMap.java.html

Хеш-таблица или хэш-карта - это массив связанных списков, снабженных хеш-кодом.

1 голос
/ 17 декабря 2010

Хеш-функции обычно используются для устранения дубликатов данных. Вот почему тип коллекций как Hashmap, не позволяющий хранить дубликаты данных. Эти алгоритмы также использовались в базе данных для устранения возможных дубликатов при поиске.

1 голос
/ 17 декабря 2010

Основное назначение хэш-кода - уменьшить количество вызовов метода equals в коллекции, основанной на хэше. Тот же хеш-код не должен возвращать true для метода equals. Но если вы говорите, что его значение равно true, тогда у него должен быть код true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...