2013-04-10 91 views
0

我一直在深入研究用Java實現的HashMap。所有值都存儲在一個「桶」中,該桶是一個Entry對象。我期待它是一個集合或我在這裏錯過了什麼?什麼類型是HashMap存儲桶

回答

1

該條目是一個集合(一個輕量級的鏈接列表,嚴格來說不是java Collection)。條目可以相互鏈接。

static class Entry<K,V> implements Map.Entry<K,V> { 
    final K key; 
    V value; 
    Entry<K,V> next; 
    final int hash; 
    } 
5

沒有。由於它不必讓用戶通過API訪問存儲桶,因此HashMap通過在內部滾動自己的非常小的鏈接列表實現來減少內存使用量並實現更簡單的實現。它可能使用LinkedList,但它不需要雙向鏈表,並且將鏈接,密鑰,值,密鑰的哈希代碼等打包到一個對象中會更有效。

0

我不知道你在看哪個實現,但在OpenJDK 6 version中,很顯然Entry存儲單個值,並且每個Entry在鏈表中形成一個節點。

相關問題