<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>哈希表的封装</title>
</head>
<body>
    <script>
        function hashFunc(str, size) {
        var hashCode = 0;
        //霍纳算法
        for (var i = 0; i < str.length; i++) {
          hashCode = 37 * hashCode + str.charCodeAt(i);
        }
        var index=hashCode%size
        return index
      }
        function HashTable(){
            this.storage=[]
            this.count=0
            this.limit=7*2
            //方法 
            HashTable.prototype.put=function(key,value){
                //根据key获取对应的index
                var index=this.hashFunc(key,this.limit)
                //根据index取出对应的bucket
                var bucket=this.storage[index]
                //、
                if(bucket==null){
                    bucket=[],
                    this.storage[index]=bucket
                }
                for(var i=0;i<bucket.length;i++){
                    var tuple=bucket[i]
                    if(tuple[0]==key){
                        tuple[1]=value
                        return
                    }
                }
                bucket.push([key,value])
                this.count+=1
            }
            HashTable.prototype.get=function(key){
                //
                var index=this.hashFunc(key,this.limit)
                //根据index取出对应的bucket
                var bucket=this.storage[index]
                if(bucket==null){
                    return null
                }
                for(var i=0;i<bucket.length;i++){
                    var tuple=bucket[i]
                    if(tuple[0]==key){
                       return tuple[1]
                    }
                }
                return null
            }
            HashTable.prototype.remove=function(key){
                var index=this.hashFunc(key,this.limit)
                //根据index取出对应的bucket
                var bucket=this.storage[index]
                if(bucket==null){
                    return null
                }
                for(var i=0;i<bucket.length;i++){
                    var tuple=bucket[i]
                    if(tuple[0]==key){
                    bucket.splice(i,1)
                    this.count--
                    return tuple[1]
                }
                }
              return null
            }
        }
    </script>
</body>
</html>

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐