なぜしなければならない2の整数乗であれば、ハッシュテーブルの容量?

まず、容量は2の整数乗であり、次いで、タブH&(長-1)モジュロ長さの位置を計算することは、計算効率を向上させることと等価です。

第二に、容量は、次に、偶数であり、2の整数乗であるので、容量-1が奇数である奇数最後の桁が1であり、これが最後の&(容量-1)Hを確保する0であってもよく、また、可能性があります1(Hの値に依存する)、すなわち、結果が偶数は、それらがハッシュの均一性を確保することができるように、それはまた、奇数であってもよいとすることができます。

容量が奇数の場合と、それから、容量-1が偶数であるだけで任意のハッシュ値となるよう、それは、最後の1は、H&(容量-1)は、最後の1は間違いなく0でされるように、0である唯一の偶数できることだということは明らかですそれは、彼らはほぼ半分のスペースを無駄にした上で配列のインデックスでさえ位置にハッシュされます。

抜粋:https://github.com/GeniusVJR/LearningNotes/blob/master/Part2/JavaSE/HashMap%E6%BA%90%E7%A0%81%E5%89%96%E6%9E%90.md

したがって、2の整数乗をとるハッシュテーブルの容量、次の2点のメリット:

あるいは減算モジュロ計算効率を向上させる、
異なるようにするために、ハッシュ値の衝突の確率が小さい、などの均一ハッシュテーブル内の可能なハッシュ等の元素を引き起こします。
---------------------
著者:ハートワイプ
CSDN:出典
元します。https://blog.csdn.net/u011240877/article/details/53351188
著作権:この記事では、ブロガーのオリジナルの記事、再現され、ボーエンのリンクを添付してください!

おすすめ

転載: www.cnblogs.com/shujiying/p/11121753.html