2017-09-28 51 views
1

如何在散列解决方案中搜索某个桶以查找密钥?我无法弄清楚如何查看我的密钥是否已经在给定的存储区号中。我不明白如何读取数组中的桶。使用桶方法的Java HashTable

我正在编写自己的哈希数据结构使用不是Java的桶。

+1

也许你需要把更多的细节,例如,一个例子会有所帮助。 –

+0

你在使用Java内置的散列数据结构吗?你自己?通常第i个桶只是数组[i]。 –

+0

对不起,我应该提到我正在编写一个自定义Bucket Hashing解决方案 – Psikik

回答

1

一旦根据哈希码找到了物品应该存在的存储桶,就必须在同一存储桶中的所有对象之间查找相关物品。现在所有这些对象都具有相同的hashCode,因为它们都在同一个存储桶中。因此,您必须将这些对象与.equals方法进行实际比较,以查看您实际正在查找的项目是否存在。

您如何管理这组共享同一个存储桶的项目取决于您。您可能有一个列表,或者一个子数组,或者包含一组对象的任何数据结构。

事实上,你不一定需要把它们都放在同一个桶里。有些方案称为开放散列,其中具有相同散列的项目“溢出”目标存储桶,并且在顶部阵列中占据连续的存储桶。

不知道您的确切数据结构我不能更具体。但基本上你使用hashCode将你引导到顶部桶,然后使用equals来在具有相同散列码的对象组中找到对象。