私は自分のデータ構造体クラスのために私自身のハッシュテーブルadtを作成しており、問題を横切って実行しています。私は(キー、値)をハッシュ私のハッシュテーブルのエントリには、以下の機能を使用(キーは文字列であり、値は任意のデータ型を指定でき、それは一般的なもの):への挿入をプロービングリニアを使用してサイズ変更後にハッシュテーブルの古い要素が見つかりませんか?
private int hashCode(String key)
{
final int constant = 37;
int hash = 0;
for(int i=0;i<key.length();i++)
{
hash+=(int)key.charAt(i) * Math.pow(constant,i);
}
return hash;
}
private int hash(String key)
{
return hashCode(key) % capacity
}
テーブルはうまく動作しますが、テーブルを展開することを選択した場合、容量が変更されているのでハッシュテーブルのget(キー)操作でハッシュ(キー)関数が適切に機能しませんそれが正しくマップされたテーブル拡張)。これを編集する簡単な方法はありますか?これは、2の係数を使ってハッシュテーブルの拡張を考慮に入れます。つまり、loadfactor> 0.5の場合は、テーブルを2 *容量増加させます。
アレイのサイズを変更した後にすべてのキーを再ハッシュするのが一般的です。あなたの教科書を見て、それがどのように行われたかについてのより深い説明が必要な場合があります。 – 4castle