2017-02-13 42 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

這是我的答案。
將密鑰存儲在哈希集中。
如果發生碰撞,請檢查該密鑰是否在集合中。
如果是替換值。如果不使用衝突策略

相關問題