2012-05-01 112 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是開始閱讀的好地方。