HashMapの長さは2の累乗である理由

効率的なアクセスのHashMap、データを入れしようとすることですできるだけ少ない影響を、可能にするために均等に分配されます。我々はまた、おそらく一般的なアプリケーションは、衝突を発生することは困難である限り、ハッシュ関数マッピングが緩んでより均等にあったように、40億の周りにマッピング空間まで追加、-2147483648 2147483647の値の範囲のハッシュ値、トップ上での話します。しかし、問題は、40億個の長さの配列があり、メモリが収まらされていません。だから、ハッシュ値が直接に使用することはできません。また、配列の長格納する剰余を得るために、使用前に最初のモジュロ演算を行うには、配列インデックスに対応する位置です。この配列の添字をして算出されます (n - 1) & hash「」(N配列は、長さを表します)。HashMapの長さが2のべき乗である理由も説明しています。

どのようにこのアルゴリズムは、それを設計する必要がありでしょうか?

まず、我々は達成するためにモジュロ演算%を使用するのではと思うかもしれません。しかし、フォーカスここで:「モジュロ(%)除数が2のべき乗である場合、動作はその除数AND(&)動作(即ち、ハッシュ%の長さ==ハッシュ・(長さの減少に相当し、 -1) 。長さが2のn乗であることを条件とする。)」  と  バイナリビット操作と、作業効率に対する%はHashMapの長さが2の累乗である理由を説明している、改善することができます。

公開された89元の記事 ウォン称賛32 ビュー20000 +

おすすめ

転載: blog.csdn.net/qq_41345773/article/details/104948877