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())