参考内存位置,用于哈希的铲斗



hashmap中或使用哈希技术的任何地方,在对象上调用哈希码方法,以计算用于查找输入对象的存储桶的哈希。

hascode()方法返回的值不是内存位置。到达内存位置的存储桶概念到底是什么?

如果它是一个单个内存位置,那么如何将其链接的地图条目列出?

我在堆栈中发现了类似的问题,但是没有一个清楚地解释了一个水桶。请帮助我清除水桶的概念。

在哈希(Hashing)中,hashcode()value决定了存储桶索引。许多对象可能具有相同的hashCode()值。在这种情况下,所有此类对象都将映射到同一桶。

理论上可以将其视为所有此类对象的容器。它可以通过各种方式实施。它被作为"哈希图"实现中的简单链接列表实现。这意味着,将存储桶实现为链接列表。我们可以想象每个存储桶都是一个链接列表。

例如,如果一个存储桶中有3个对象(a,b,c),则可以将存储桶视为链接列表a-> b-> c-> null

在散布中的存储桶不过是数组索引(在大多数情况下)。

您的哈希功能将始终返回需要放置对象的数组索引(或根据要求进行任何操作本身)。因此,要了解如何管理内存,您需要了解数组的分配方式。

他们将获得连续的内存位置,以确保对任何索引的动态访问完美效果。

什么是哈希表返回相同的索引

然后,您可以将该索引指向链接列表或其他数组以存储更多值。

访问这些值时,您可以在恒定时间内简单地从哈希函数访问所需的索引,如果该索引保持多个值,则可以在那些值指向链接列表的情况下迭代这些值。

在这种情况下,链接列表将在一个单独的位置。该位置的起始地址将由该数组索引指向。

相关内容

  • 没有找到相关文章

最新更新