数据结构-javascript 实现【散列表】
散列表类似于字典,但其使用散列函数获得地址从而获取数据值。
1. 散列表的方法
put(key, value): 向散列表增加一个新的项
remove(key): 根据键值从散列表中移除值
get(key): 返回根据键值检索到的值
2. 散列表的实现
class HashTable { constructor(){ this.table = []; } _loseloseHashCode(key) { let hash = 0; for (let i =0; i< key.length; i++){ hash += key.charCodeAt(i); } return hash; } _djb2HashCode(key){ let hash = 5381; for (let i = 0; i < key.length; i ++){ hash = hash * 33 + key.charCodeAt(i); } return hash % 1013; } hash(key) { return this._djb2HashCode(key); } put(key, value) { const position = this.hash(key); this.table[position] = value; } get(key) { return this.table[this.hash(key)]; } remove(key) { this.table[this.hash(key)] = undefined; } } const hash = new HashTable(); hash.put('lucy', 'lucy@126.com'); hash.put('jack', 'jack@126.com'); hash.put('mike', 'mike@126.com'); console.log(hash.get('lucy')); // 'lucy@126.com' hash.remove('lucy'); console.log(hash.get('lucy')); // undefined