これは何を意味するのでしょうか?エントリ<K、V> E =表[bucketIndex]。

イゴール・ウィルシャー:

私はどのように勉強していHashMapた作品の内側とは、この方法を理解することはできません。

void addEntry(int hash, K key, V value, int bucketIndex) {
        Entry<K,V> e = table[bucketIndex];
        table[bucketIndex] = new Entry<K,V>(hash, key, value, e);
        if (size++ >= threshold)
            resize(2 * table.length);

オブジェクトは、なぜeアドレス(または何ここで起こる?)のを取得table[bucketIndex]して、これはtable[bucketIndex]新しいを取得しますかちょうど下にあるものを使用しなかった理由は、何ですか?Entry(hash, key, value, e)

Entry<K,V> e = new Entry<K,V>(hash, key, value)
table[bucketIndex] = e;
ビクターStafusa:

で衝突があるかもしれないのでHashMap(同じ生成すなわち異なるキーbucketIndex)。彼らはあなたが示唆して何をした場合、衝突の場合には、最後に挿入された要素は、おそらく事実上予測不可能な方法で、衝突の場合には、以前のものを削除します。

Entryそれは実際にビットがmisnamedで、実際にはエントリのリンクリストのノードで、リンクリストのいくつかの並べ替えとして実装されています。これが理由でもあるeの最後のパラメータとして渡されるEntryコンストラクタ。

新しい作成Entry(前のものを指すことをe)と同じ場所にそれを追加eしたことは、リンクされたリストのbegginingで新しいノードを挿入する操作であり、あっても作品eでしたnull(衝突時には、すなわちありませんでしたすべておよび作成Entry与えられたとの最初のものがありますbucketIndex)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=23456&siteId=1