JSFiddle - React, Tailwind, and code Playground
by Eugen Sunic
JavaScript
class HashMap {
storage = {}
size = 0;
constructor() {}
hashStringToInt(s, tableSize) {
let hash = 17;
for (let i = 0; i < s.length; i++) {
hash = (13 * hash * s.charCodeAt(i)) % 333
}
return hash;
}
add(key, value) {
const hash = this.hashStringToInt(key);
if (this.storage[hash]) {
if (!(this.storage[hash] instanceof Array)) {
this.storage[hash] = [this.storage[hash], value];
} else {
this.storage[hash].push(value);
}
} else {
this.storage[hash] = value;
}
this.size++;
}
get(key) {
const hash = this.hashStringToInt(key);
return this.storage[hash] || null;
}
remove(key) {
const hash = this.hashStringToInt(key)
if (this.storage[hash]) {
delete this.storage[hash]
}
--this.size;
}
getSize() {
return this.size;
}
}
const hashMap = new HashMap();
hashMap.add('key1', 'value1');
hashMap.add('key2', 'value2');
hashMap.add('key2', 'value4');
hashMap.add('key2', 'value3');
hashMap.remove('key1')
console.log(hashMap.getSize())