让我说我的哈希表的桶数是100。我的哈希码对于密钥A来说是500
,对于密钥B来说是600
。这些都解析为0
hashCode % this.bucketCount
,这是不同哈希码的冲突。
我想知道为什么%
用于计算索引。有人可以解释数学吗?为什么这个数学的索引输出应该插入我的节点呢?
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;
};
答案 0 :(得分:3)
因为有bucketCount
个桶,所以除以桶数的模数(或余数)用于确保结果适合在可用的桶中。如果你没有取模数,你就得不到结果而不能存储它们。