【问题标题】:Java HashTable using Bucket Method使用 Bucket 方法的 Java HashTable
【发布时间】:2018-03-10 13:53:49
【问题描述】:

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

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

【问题讨论】:

  • 也许您需要提供更多细节,例如,举个例子会有帮助。
  • 你在使用 Java 内置的哈希数据结构吗?你自己?通常第 i 个桶只是 array[i]。
  • 对不起,我应该提到我正在编写一个自定义的桶散列解决方案
  • 如果您分享您如何在数据结构中表示存储桶会更好

标签: java data-structures hash hashtable


【解决方案1】:

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

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

事实上,您根本不必将它们全部放在同一个存储桶中。有一种称为开放散列的方案,其中具有相同散列的项目“溢出”到目标存储桶中,并占据顶部数组中的连续存储桶。

在不知道您的确切数据结构的情况下,我无法更具体。但基本上你使用 hashCode 将你带到顶部存储桶,然后使用 equals 在具有相同 hashcode 的对象组中查找对象。

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 2012-01-15
    • 2012-03-27
    • 1970-01-01
    • 2010-11-15
    • 2011-01-04
    • 2011-06-05
    • 2010-10-15
    • 1970-01-01
    相关资源
    最近更新 更多