Предоставляет ли HashMap корреспонденцию один на один? - PullRequest
4 голосов
/ 23 марта 2010

Я нашел следующее утверждение:

Карта - это объект, который хранит пары ключ / громкость. Учитывая ключ, вы можете найти его значение. Ключи должны быть уникальными, но значения могут быть продублированы.

Например, у меня есть только одна пара ключ / значение (3,4). И теперь у меня put новая пара (3,5). Это удалит старую пару. Правильно? Но если я put (2,4) вместо (3,4), я добавлю новую пару ключ / значение в HashMap. Правильно?

Ответы [ 4 ]

10 голосов
/ 23 марта 2010

Ответ на вопрос в вашем заголовке «Нет». Ответ на вопрос в вашем сообщении - «Да». Если вам нужна двунаправленная карта с уникальными ключами и уникальными значениями, как указано в вашем заголовке (также называемая картой ключей), посмотрите на Гуава BiMap .

7 голосов
/ 23 марта 2010

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

2 голосов
/ 23 марта 2010

Вы правы. Для каждого ключа есть только одно значение. Но ничто не мешает нескольким ключам иметь одинаковое значение.

Думайте о HashMap как о коробке с выдвижными ящиками, каждый ящик может содержать только один предмет, и каждый ящик помечен ключом. Таким образом, после того, как вы положили яблоко в ящик с пометкой 1, вы не можете положить туда апельсин, если вы сначала не достанете яблоко оттуда. Однако ничто не мешает вам положить апельсины в ящики 2, 3 и 4.

1 голос
/ 23 марта 2010

Да, это правильно.Если вы хотите переписку один на один, используйте что-то вроде BiMap из Гуава (или Библиотека коллекций Java Google ).

...