2017-02-13 18 views
-1

Я реализую хэш-карту с нуля, и это меня осенило.Как определить, следует ли перезаписывать значение или использовать стратегию столкновения? (Java HashMaps)

Допустим, у меня есть 3 различных ключей и 3 значения

 Keys -> Value: A -> 1, B -> 2,C -> 3 

и каждый из них земли в открытом слот в массиве.

Если четвертый ключ D производит один и тот же индекс хэша в качестве одного из ранее 3 клавиш можно использовать любого из стратегий столкновений для обработки этого случая (линейного зондирующего, перефразируя и т.д.)

Однако позволяет сказать, что я хочу для перезаписи [Ключ A, значение 1] с [Ключ A, 99]. Это столкновение, однако Java.Util.HashMap знает, что вы хотите перезаписать значение.

Если возникает столкновение, как вы определяете, перезаписать ли значение или найти открытое местоположение?

+1

Не понимаю. Если есть столкновение, это означает только то, что результат вашей функции bucketing/hash одинаковый для двух ключей. Он ничего не говорит о том, равны ли эти два ключа. Это то, что вы должны проверить. –

+0

Столкновение - это когда два ключа сопоставляются с одним и тем же местом хранения. Перезапись значения - это когда вы хотите обновить значение определенного ключа. –

+0

Обновление ключа является частью интерфейса структуры хешируемых данных. Обработка конфликтов - это часть реализации. –

ответ

-2

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

 Смежные вопросы

  • Нет связанных вопросов^_^