Обеспечивает ли HashMap переписку один на один?

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

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

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


person Roman    schedule 23.03.2010    source источник
comment
Вы когда-нибудь пытались самостоятельно отлаживать/тестировать?   -  person Alexander Pogrebnyak    schedule 23.03.2010
comment
Никогда не помешает поэкспериментировать, если только вы не играете в чехарду с единорогом, не экспериментируйте с этим, это плохо кончится..   -  person Anthony Forloney    schedule 23.03.2010
comment
Энтони: Кроме того, вопросы, которые начинаются, интересно, будет ли правительство возражать, если я буду платить налоги таким образом ... лучше всего решать, консультируясь с юристом, а не экспериментируя. Налоговое управление демонстрирует удручающее отсутствие признания творчества.   -  person Jay    schedule 23.03.2010


Ответы (4)


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

person MattGrommes    schedule 23.03.2010

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

person BalusC    schedule 23.03.2010

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

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

person Vlad    schedule 23.03.2010

Да, это правильно. Если вам нужна индивидуальная переписка, используйте что-то вроде BiMap из Guava (или библиотека Java-коллекций Google).

person Jon Skeet    schedule 23.03.2010