0
ハッシュテーブルのバケットカウントが100であるとします。私のハッシュコードは、鍵Aの場合は500
、鍵Bの場合は600
になります。これらは両方ともhashCode % this.bucketCount
の0
に解決されます。これは異なるハッシュコードの衝突です。%がhashCodeのインデックス変換の計算に使用されるのはなぜですか?
なぜ%
がインデックスを計算するのに使用されているのだろうかと思います。誰かがこれについて数学を説明できますか?なぜ私は自分のノードを挿入すべき場所にインデックスを出力するのですか?
HashTable.prototype.hashFunction = function(key){
var hash = 0;
for (var i=0;i< key.length; i++){
console.log(key.charCodeAt(i))
hash += key.charCodeAt(i)
}
return hash;
};
HashTable.prototype.convertHashToIndex = function(hashCode) {
return hashCode % this.bucketCount;
};
Duh、意味があります。次に、hashCodesが同じインデックスを取得した場合、そのインデックスで返されたバケット(リンクされたリスト)を歩いてリストの末尾にノードを追加することによって、この衝突を処理します。 – Growler
@Growlerまたはリストの先頭あなたが好きならリスト内で)。しかし、そうです、それは一般的にどのように衝突が処理されるかです。 –