首页 > 其他分享 >散列表结构-new

散列表结构-new

时间:2024-04-03 13:57:02浏览次数:24  
标签:return valuepair 列表 item key mymap new table 结构

<!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>Document</title> </head> <body>          <script>
        class HashTable {             table = {}
            toStrFn(item){                 if(item === null){                     return 'NULL'                 } else if(item === undefined){                     return 'UNDEFINED'                 }else if (item === 'string' || item  instanceof String) {                     return item                 }
                return JSON.stringify(item)             }
            /**                *  1 对象 ===>  字符串              *  2 chartAtCode +              *  3 %             */             hashCode(key){                 const tablekey = this.toStrFn(key)                 let hash = 5381                 for(let i=0;i<tablekey.length;i++){                     hash += (hash * 33) + tablekey.charCodeAt(i)                 }                 return hash % 1013               }               set(key, value){                 if(key != null && value != null){                    const positon = this.hashCode(key)                    this.table[positon] = new  ValuePair(key,value)
                    return true                 }                 return false             }               hasKey(key){                 return this.table[this.hashCode(key)] != null             }

            get(key){
                const valuepair = this.table[this.hashCode(key)]                 return valuepair == null ? undefined : valuepair.value             }
            remove(key){                 if(this.hasKey(key)){                     delete this.table[this.hashCode(key)]                     return true                 }                 return false             }
            keys(){                 return this.keyValues().map(item => item.key)             }
            values(){                 return this.keyValues().map(item => item.value)             }
            keyValues(){                 return Object.values(this.table)             }
            size(){                 return Object.keys(this.table).length             }
            isEmpty(){                 return this.size() === 0             }
            clear(){                 this.table = {}             }  
            forEach(cb){                 const valuepair = this.keyValues()                 for(let i = 0; i < valuepair.length; i++){                     cb(valuepair[i].key, valuepair[i].value)                 }             }
        }
        class ValuePair {             constructor(key, value){                 this.key = key                 this.value = value             }         }
        var mymap = new HashTable();         mymap.set('name','Eric')         mymap.set('tiechui','tiechui')         mymap.set('chuitie','chuitie')         mymap.set('jack','jack')         mymap.set({a:1},'aaaa')         console.log(mymap)
        // mymap.get('name')         // mymap.get({a:1})
        // mymap.remove('name')         // mymap.remove({a:1})
    </script> </body> </html>

标签:return,valuepair,列表,item,key,mymap,new,table,结构
From: https://www.cnblogs.com/eric-share/p/18112514

相关文章

  • map-字典结构-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 栈结构-stack-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 队列-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 单链表-案例-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 双端队列-案例-回文-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 循环列表-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 双向链表-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 集合set-new
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=d......
  • 计算机组成与系统结构-第3章 运算方法和运算部件 上
    文章目录3.1高级语言和机器指令中的运算3.1.1C语言程序中涉及的运算数据的运算3.1.2MIPS指令中涉及的运算3.2基本运算部件3.2.1全加器和加法器全加器(FullAdder,简称FA)串行进位加法器/行波进位加法器(carryrippleadder,CRA)。3.2.2并行进位加法器3.2.3带标志加法器3......
  • 理解列表的引用和浅拷贝,体会path和path[:]的不同
    文章目录零、从哪里来一、先看算法题(回溯法)二、扩展三、总结零、从哪里来引用与浅拷贝与深拷贝记得看这篇文章总结最后,不亏,没看完的话,你会后悔一辈子。一、先看算法题(回溯法)给你一个整数数组nums,其中可能包含重复元素,请你返回该数组所有可能的子集。解集不能......