如何确定是覆盖一个值还是使用碰撞策略? (Java HashMaps)

问题描述:

我一直在从头开始实施散列映射,这对我来说是曙光。如何确定是覆盖一个值还是使用碰撞策略? (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

更新密钥是哈希数据结构的接口的一部分。碰撞处理是实施的一部分。 –

这是我的答案。
将密钥存储在哈希集中。
如果发生碰撞,请检查该密钥是否在集合中。
如果是替换值。如果不使用冲突策略