2012-04-10 225 views
0

好吧,我正在使用hashmap,使用我的一個類作爲Key。HashMap密鑰哈希碼可能失敗?

我的問題是:當我得到正確的項目一次,是否有可能在另一次得到一個壞項目?

我的意思是,我實現了一個散列碼算法,我在這裏查看另一個問題。 有時我得到正確的項目,另一次我沒有得到它。

任何猜測?是否有可能找到一次,第二次找不到它? 我不會刪除它!

非常感謝!

回答

3

當然不是,你需要一致性。如果使用相同的算法進行計算,則對於同一項目,散列值必須始終相同。

對您的問題的一個可能的答案是,您正在計算使用您的對象的一些內部值在第一次搜索和第二次搜索之間修改。

從兩個值映射到同一個散列值的意義上說,你可能會碰到碰撞,但你不能有第一次工作的東西,而第二次不工作。

+0

當然,可能''hashCode()'函數已被(不正確)由OP寫入。而且它也可以運行在可變類型上,特別是在可變字段上。 – 2012-04-10 22:38:09

+1

這是我想到的第一件事,我們會看看他是否給了我們更多的細節 – Jack 2012-04-10 22:39:12

+0

當我在hashMap上放置一個項目時,我使用:basicRoomContent.put(room [n] [j],si); room [n] [j]是我的Class Cell的一個矩陣對象,並且從哈希中獲得一個項目我使用這個:basicRoomContent.containsKey(new Cell(x,y));和我的哈希碼和等於方法是這樣的:http://tinypaste.com/b78439dc 非常感謝您的幫助球員提前 – TiagoM 2012-04-10 22:45:54