猿问

JavaScript的散列函数问题

   var loseloseHashCode = function (key) {

        var hash = 0;

        for (var i = 0; i < key.length; i++) {

            hash += key.charCodeAt(i);

        }

        return hash % 37;

    };

    

    this.put = function(key, value) {

        var position = loseloseHashCode(key); //{5}

        console.log(position + ' - ' + key); //{6}

        table[position] = value; //{7}

    };

问题:看到某本书上的散列函数最后return hash %37,我测试这样会出现覆盖啊。比如当key='Abc'和key='fbc'的时候,因为Abc的ASCII码值之和=262,而fbc的ASCII值之和=299。他们两个各自Mod37=3。所以都会在position=3这个位置上插入一个值,最后结果产生覆盖。书上上是为了比较小的数值,但这样会产生覆盖啊,这样是散列函数的本义吗?


慕侠2389804
浏览 338回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答