インターネットで、私はこの質問に遭遇しました:
キー値を見つけるさまざまな方法に基づいてハッシュ関数を分類します。
のような答えで
奇妙だと思います。私はハッシュについてはよく知っていると思いますが、これは私には明白に意味不明です、誰かが説明できますか?
これらは、ハッシュコードを、値を含む配列のインデックスに変換する方法です。 0x12345678のハッシュコードがあるとします。非常に大きな数であり、このサイズの配列を持つことはほとんどありません。あなたがするなら、あなたはただすることができます
Value = array[0x12345678];
そして、行われます(直接法)。
そうしないと、衝突を回避しすぎないようにしながら、この値を配列サイズに適合する値に変換する方法がわかります。使用される用語はおそらく他の名前でも知られていますが、たとえば、ハッシュコードの上位ビットをマスクすることができます
Value = array[hashcode & 0xffff];
または、配列サイズに対してハッシュコードを変更します
Value = array[hashcode % array.size()]; // modulo division
など
編集:this link が役立つかもしれません