ハッシュテーブルがインデックス0〜HASHSIZE-1の配列であるとします。この関数は正しい範囲の値を返し、実行時エラーを生成しません。渡されたStringに少なくとも2文字が含まれているとします。なぜそれは貧弱なハッシュ関数ですか?与えられたハッシュ関数はなぜ貧弱なハッシュ関数ですか?
public static int hash(String key) {
return (key.charAt(0)
+ key.charAt(1)
+ key.charAt(key.length()-1) % HASHSIZE;
}
多くの衝突があるように見えますが、これは貧弱です。 – Carcigenicate
ディストリビューションを確認してください –
また、ほとんど役に立たない文字列の内容を無視しているようです。 – Carcigenicate