Если ключ имеет два значения ...
В HashMap
ключ не может иметь двух значений. Если вы вызываете map.put(key,value)
с существующим key
, старое значение удаляется с карты и возвращается put()
.
Один из способов получить несколько значений для каждого ключа - использовать HashMap<K,Collection<V>>
. Это автоматически обеспечивает необходимую функциональность, поскольку вы можете просто просмотреть содержимое коллекции значений после добавления в нее нового элемента.
Существуют также сторонние классы, которые предоставляют эту функцию, например MultiValueMap
.
редактирование:
Если вы говорите о нескольких ключах, заканчивающихся в одном сегменте , то вам нужно изменить HashMap
'put()
метод:
public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
if (table[i] != null) {
// TODO: there's already something in this bucket
}
for (Entry<K,V> e = table[i]; e != null; e = e.next) {
...
(Добавьте свой код, где строка TODO
.)
Вам нужно будет внести аналогичные изменения в putForNullKey()
и другие связанные методы, такие как putForCreate()
.