2017-09-28 77 views
1

如何在散列解決方案中搜索某個桶以查找密鑰?我無法弄清楚如何查看我的密鑰是否已經在給定的存儲區號中。我不明白如何讀取數組中的桶。使用桶方法的Java HashTable

我正在編寫自己的哈希數據結構使用不是Java的桶。

+1

也許你需要把更多的細節,例如,一個例子會有所幫助。 –

+0

你在使用Java內置的散列數據結構嗎?你自己?通常第i個桶只是數組[i]。 –

+0

對不起,我應該提到我正在編寫一個自定義Bucket Hashing解決方案 – Psikik

回答

1

一旦根據哈希碼找到了物品應該存在的存儲桶,就必須在同一存儲桶中的所有對象之間查找相關物品。現在所有這些對象都具有相同的hashCode,因爲它們都在同一個存儲桶中。因此,您必須將這些對象與.equals方法進行實際比較,以查看您實際正在查找的項目是否存在。

您如何管理這組共享同一個存儲桶的項目取決於您。您可能有一個列表,或者一個子數組,或者包含一組對象的任何數據結構。

事實上,你不一定需要把它們都放在同一個桶裏。有些方案稱爲開放散列,其中具有相同散列的項目「溢出」目標存儲桶,並且在頂部陣列中佔據連續的存儲桶。

不知道您的確切數據結構我不能更具體。但基本上你使用hashCode將你引導到頂部桶,然後使用equals來在具有相同散列碼的對象組中找到對象。