HashMap实施概念

时间:2012-05-01 11:31:41

标签: java conceptual

我已多次阅读,我只想澄清一下。

HashMap被称为Arraylists数组。

我们可以说数组大小是散列映射的桶大小

注意:我只想做一次修正:

1)桶数相当于数组大小 2)铲斗尺寸是Arraylist的大小。

抱歉给您带来不便。如果以上两点是正确的,请告诉我。

3 个答案:

答案 0 :(得分:4)

没有。在您的类比中,每个桶将是一个ArrayList,因此桶大小将是ArrayList的大小。一个好的实现将努力使所有这些大小保持相同,并且相当小。

答案 1 :(得分:0)

存储桶的数量是数组的长度。每个存储桶都是一个ArrayList,因此存储桶大小(可能因存储桶而异)将是该ArrayList的长度。这个大小多于一个的唯一原因是,如果为添加到HashMap的两个对象计算的哈希码发生碰撞(nb,这可能与hashCode()返回的值不同,但是从它生成的值与地图中容量/桶数量的关系。)

答案 2 :(得分:0)

实际上它比这更复杂。例如,Java HashMap实现为链接列表数组。在该模型中,根本没有固定的桶大小。

如果您阅读了文献,您会发现有许多不同的方法来组织具有不同特征的哈希表。 Wikipedia page on hash tables是开始阅读的好地方。