hashmap中或使用哈希技术的任何地方,在对象上调用哈希码方法,以计算用于查找输入对象的存储桶的哈希。
hascode()方法返回的值不是内存位置。到达内存位置的存储桶概念到底是什么?
如果它是一个单个内存位置,那么如何将其链接的地图条目列出?
我在堆栈中发现了类似的问题,但是没有一个清楚地解释了一个水桶。请帮助我清除水桶的概念。
在哈希(Hashing)中,hashcode()value决定了存储桶索引。许多对象可能具有相同的hashCode()值。在这种情况下,所有此类对象都将映射到同一桶。
理论上可以将其视为所有此类对象的容器。它可以通过各种方式实施。它被作为"哈希图"实现中的简单链接列表实现。这意味着,将存储桶实现为链接列表。我们可以想象每个存储桶都是一个链接列表。
例如,如果一个存储桶中有3个对象(a,b,c),则可以将存储桶视为链接列表a-> b-> c-> null
在散布中的存储桶不过是数组索引(在大多数情况下)。
您的哈希功能将始终返回需要放置对象的数组索引(或根据要求进行任何操作本身)。因此,要了解如何管理内存,您需要了解数组的分配方式。
他们将获得连续的内存位置,以确保对任何索引的动态访问完美效果。
什么是哈希表返回相同的索引
然后,您可以将该索引指向链接列表或其他数组以存储更多值。
访问这些值时,您可以在恒定时间内简单地从哈希函数访问所需的索引,如果该索引保持多个值,则可以在那些值指向链接列表的情况下迭代这些值。
。在这种情况下,链接列表将在一个单独的位置。该位置的起始地址将由该数组索引指向。