2013-04-10 65 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在链表中形成一个节点。

相关问题