代わりに満たされたバケットの合計サイズに基づいてサイズを変更するハッシュマップ、totalSize(no of elements inserted) > arrayLength * loadFactor
なぜJavaで</p> <p>現在、HashMapの::私は私の心に疑いを持っている
は、それがテーブルを倍増し、すべてのキーと値をリハッシュときリサイズします。
しかし、Keyクラスのハッシュコードがハードコーディングされているとしましょう.1とすると、毎回要素がリンクリスト形式でインデックス1に挿入されます。しかし、私たちのbucketarray
は、合計サイズに合わせてサイズ変更する必要はありません。したがって、要素はそのようなハッシュコードの実装で同じバケットに入る間、それは増加するbucketarray
のサイズを維持します。
私は質問がありますが、サイズの合計ではなく、埋められたバケットのサイズを確認してください。
私はそのようなハッシュコードがパフォーマンスを妨げることがわかります。私はこれを論理的な質問として求めています。
いつもリンクされたリストではありません(https://stackoverflow.com/questions/43911369/hashmap-java-8-implementation/43911638#43911638)。 – Michael
合計要素を使用すると、実装を単純化し、使用されているバケットを追跡できます。おそらく、HashMap開発者は、必要ないところでHashMapを使用している人にデザインを頼りにしていないか、またはすべての要素に同じキーを使用するように非常にばかげているか、そうでない場合にはbadCode()関数 – nos
@nos "実際には、悪いハッシュ関数のパフォーマンスへの影響を減らすための手順がありました。 – Michael