class HashTable {constructor() {
this.tableSize = 10000007
this.table = new Array(this.tableSize).fill(0)
}
_hash(s) {
let n = 1
let f = 1
let arr = s.split('')
for(let i in arr) {n += arr[i].charCodeAt() * f
f *= 10
}
return n
}
_index(k) {return this._hash(k)
}
_insert_at_index(index, k, v) {// console.log(index)
// console.log(this.table[index])
let tmp = this.table[index]
let data = [k, v]
// console.log('tmp', tmp)
// console.log(data)
if(tmp === 0) {this.table[index] = [data]
} else {this.table[index].push([data])
}
}
set(k, v) {let index = this._index(k)
this._insert_at_index(index, k, v)
}
//
get(k) {let index = this._index(k)
// console.log('index', index)
let tmp = this.table[index]
// console.log('tmp', tmp)
if(tmp instanceof Array) {for(let kv in tmp) {if(tmp[kv][0] === k) {return tmp[kv][1]
}
}
}
return null
}
}
//
let ht = new HashTable()
let names = ['tao', 'gua', 'wu']
for(let i in names) {
let v = i
ht.set(names[i], v)
console.log('set', names[i], v)
}
for(let j in names) {let v = ht.get(names[j])
console.log('get', names[j], v)
}