为什么%用于计算hashCode索引转换?

时间:2017-07-08 00:54:59

标签: javascript hashtable

让我说我的哈希表的桶数是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;
};

1 个答案:

答案 0 :(得分:3)

因为有bucketCount个桶,所以除以桶数的模数(或余数)用于确保结果适合在可用的桶中。如果你没有取模数,你就得不到结果而不能存储它们。