0

我一直HashMap在研究 Java 中的实现。所有值都存储在作为Entry对象的“桶”中。我期待它是一个收藏品,还是我在这里遗漏了什么?

4

3 回答 3

5

没有。由于它不必让用户通过 API 访问存储桶,因此HashMap只需在内部滚动其自己的非常小的链表实现即可减少内存使用并简化实现。它可以使用LinkedList,但它不需要双向链表,将链接、键、值、键的哈希码等打包到一个对象中会更有效。

于 2013-04-10T19:54:19.027 回答
1

Entry 是一个集合(一个轻量级的排序链表。Collection严格来说不是java)。条目可以相互链接。

    static class Entry<K,V> implements Map.Entry<K,V> {
    final K key;
    V value;
    Entry<K,V> next;
    final int hash;
    }
于 2013-04-10T19:55:29.683 回答
0

我不知道你在看谁的实现,但是在OpenJDK 6 版本中,很明显 anEntry存储一个值,并且每个值Entry在链表中形成一个节点。

于 2013-04-10T19:54:56.607 回答