我一直在深入研究Java中的HashMap
实现。所有值都存储在作为Entry
对象的“桶”中。我以为它是一个集合,还是我在这里遗漏了一些东西?
答案 0 :(得分:5)
不。由于它不必让用户通过API访问存储桶,因此HashMap
通过在内部滚动自己的非常小的链表实现来减少内存使用并简化实现。 可能使用LinkedList
,但它不需要双向链表,并且打包链接,密钥,值,密钥的哈希码等更有效。成为一个对象。
答案 1 :(得分: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;
}
答案 2 :(得分:0)
我不知道您正在查看哪些实现,但在OpenJDK 6 version中,很明显Entry
存储单个值,而每个Entry
形成一个节点链表。