我正在尝试理解Java中HashMap的内部实现。我对'createEntry'方法感到困惑。
void createEntry(int hash, K key, V value, int bucketIndex) {
Entry<K,V> e = table[bucketIndex];
table[bucketIndex] = new Entry<>(hash, key, value, e);
size++;
}
它创建一个入口对象'e',然后将它放到另一个入口对象并将其存储到bucket [bucketindex]中,它还存储键和值。我无法理解在这里创建Entry对象'e'的目的。有人可以解释一下。
此致
答案 0 :(得分:6)
它获取存储桶中的上一个条目(即使它是null
)。然后,它创建一个新条目,将其next
条目设置为检索到的前一个条目。然后,它将新条目设置为存储桶中的相同索引。
所以说你有哈希的3个元素
0: [null]
1: [some entry]
2: [null]
你必须添加到索引1
0: [null]
1: [new entry] -> [some entry]
2: [null]
同样,添加到索引0
0: [newer entry] -> [null]
1: [new entry] -> [some entry]
2: [null]