なぜHashtableが負のハッシュコードを使用しないのですか? (hash & 0x7FFFFFFF)
は、符号ビットが正の0になりますが、なぜ我々は、符号なしとして符号付き32ビット整数を扱うことができませんでしたハッシュテーブルのハッシングが負のハッシュコードを避ける
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
?モジュラートリックを使用してそれが正になるようにすることさえできます。例えば、
public static long int_mod(int hashcode, int tab_length){
return (hashcode % tab_length + tab_length) % tab_length;
}
この方法は簡単で効果的だと思います。それがおそらくそれが使われた理由です。 '(ハッシュ&0x7FFFFFFF)'が正の値に、 '%tab.length'がタブのサイズに狭くなります。シンプルで清潔で簡単。 –
どの方法を参考にしていますか?元の実装ですか? – peter
はい。既に実装されています。 –