2012-05-01 113 views
1

我已经读过很多遍了,我只是想澄清一下。HashMap实现概念

HashMap被认为是一个Arraylists数组。

,我们可以说,数组大小是一个HashMap

注桶大小:我只想做一个更正:

1)桶数相当于数组大小 2)桶大小是Arraylist的大小。

抱歉给您带来不便。请让我知道上述两点是否正确。

回答

4

否。在你的比喻中,每个桶将是一个ArrayList,因此桶大小将是ArrayList s的大小。一个好的实现将努力保持它们大致相同的规模,并且相当小。

+1

虽然HashMap桶更像是一个LinkedList比ArrayList ... –

0

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

0

其实它比这更复杂。例如,Java HashMap被实现为链表的数组。在该模型中,根本没有固定的铲斗尺寸。

如果你阅读了文献,你会发现有很多不同的方法来组织一个具有不同特征的散列表。 Wikipedia page on hash tables是开始阅读的好地方。