对Java HashMap createEntry方法的困惑

amb*_*bar 1 java hashmap

我试图理解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++;
}
Run Code Online (Sandbox Code Playgroud)

它创建一个入口对象'e',然后将它放到另一个入口对象并将其存储到存储桶[bucketindex]中,它还存储密钥和值.我无法理解在这里创建Entry对象'e'的目的.请有人解释一下.

问候

Sot*_*lis 6

它获取桶中的前一个条目(即使它是null).然后它创建一个新条目,将其next条目设置为检索到的前一条目.然后,它将新条目设置为存储桶中的相同索引.

所以说你有哈希的3个元素

0: [null]
1: [some entry]
2: [null]
Run Code Online (Sandbox Code Playgroud)

而你必须添加到索引1

0: [null]
1: [new entry] -> [some entry]
2: [null]
Run Code Online (Sandbox Code Playgroud)

同样,添加到索引0

0: [newer entry] -> [null]
1: [new entry] -> [some entry]
2: [null]
Run Code Online (Sandbox Code Playgroud)