1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| function HashTable() { var table = {}; this.put = function(key, value){ var position = loseloseHashCode(key); table[position] = value; } this.remove = function(key){ table[loseloseHashCode(key)] = undefined; } this.get = function(key){ reture table[loseloseHashCode(key)]; }
var loseloseHashCode = function (key) { var hash = 0; for (var i = 0; i < key.length; i ++){ hash += key.charCodeAt(i); } return hash % 37; } } ```
## Handling Collisions between hash tables
- Separate Chaining - Creating a linked list for each position of the table and storing the elements in it
```javascript
var ValuePair = function(key, value){ this.key = key; this.value = value;
this.toString = function(){ return '[' + this.key + ' - ' + this.value + ']'; } }
function HashTable() { var table = {}; this.put = function(key, value){ var position = loseloseHashCode(key);
if(table[position] == undefined){ table[position] = new LinkedList(); } table[position].append(new ValuePair(key, value)); } this.get = function(key){ var position = loseloseHashCode(key);
if (table[position] !== undefined){ var current = table[position].getHead();
while(current.next){ if( current.element.key === key ){ return current.element.value; } current = current.next; }
if(current.element.key === key){ return current.element.value; } } return undefined; } this.remove = function(key){ var position = loseloseHashCode(key);
if (table[position] !== undefined){ var current = table[position].getHead(); while( current.next ){ if (current.element.key === key){ table[position].remove(current.element); if (table[position].isEmpty()){ table[position] = undefined; } return true; } current = current.next; } if (current.element.key === key){ table[position].remove(current.element); if (table[position].isEmpty()){ table[position] = undefined; } return true; } } return false; }
var loseloseHashCode = function (key) { var hash = 0; for(var i = 0; i < key.length; i++){ hash += key.charCodeAt(i); } return hash % 37; } }
|