Как я могу иметь HashMap с уникальными ключами в Java? - PullRequest
38 голосов
/ 19 января 2012

Как я могу иметь HashMap с уникальными ключами в Java?Или даже имеет ли смысл иметь уникальные ключи в HashMap или ключи уникальны по умолчанию?Я новичок.ТНХ

Ответы [ 6 ]

50 голосов
/ 19 января 2012

Ключ хеш-карты уникален. Добавьте дубликат ключа, тогда он будет перезаписан.

 HashMap hm = new HashMap();
 hm.put("1", new Integer(1));
 hm.put("2", new Integer(2));
 hm.put("3", new Integer(3));
 hm.put("4", new Integer(4));
 hm.put("1", new Integer(5));// value integer 1 is overwritten by 5

По умолчанию Hashmap не синхронизируется.

33 голосов
/ 19 января 2012

Ключи уникальны на всех картах. Различие между различными реализациями карт касается возможности нулевых ключей, порядка итерации и проблем параллелизма.

1 голос
/ 19 января 2012

Попробуйте взглянуть на Java API для Map , который является интерфейсом, который реализует HashMap.Первое предложение:

Объект, который сопоставляет ключи со значениями.Карта не может содержать дубликаты ключей;каждая клавиша может соответствовать максимум одному значению.

1 голос
/ 19 января 2012

Общая хэш-карта обычно реализуется в виде ассоциативного массива, поэтому, скажем, ваш массив содержит N элементов, от 0 до N-1, когда вы хотите добавить новую пару (ключ, значение), что это делается за кулисамиis (только концептуально):

  1. index = hash (ключ) mod N
  2. array [index] = значение

Итак, по построению,ключ сопоставляется с одной и только одной записью массива.

Обратите внимание, что на самом деле это немного сложнее, чем это: я специально игнорирую такие вещи, как обработка столкновений, перефразировка и т. Д., У вас может быть хорошее общее представление здесь https://en.wikipedia.org/wiki/Hash_table

1 голос
/ 19 января 2012

HashMap - это коллекция для хранения пар (ключ, значение), и согласно документации HashMap ключи всегда уникальны.

Если вы добавляете ключ, который уже существует (коллизия) в hashmap, старое значение будет заменено.

1 голос
/ 19 января 2012

HasMap имеет уникальные ключи.as .keySet () возвращает Set с уникальными элементами

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