Modifies hash method to stay within the range of the hash table

This commit is contained in:
Julien Lengrand-Lambert
2013-11-21 11:50:11 +01:00
parent 702f8999b3
commit bcadb29f5f
2 changed files with 12 additions and 2 deletions

View File

@@ -8,6 +8,16 @@ class HashMap():
def __init__(self, hash_size=513):
self._hash_size = hash_size
self._size = 0
self.hmap = [] * self._hash_size
def add(self, value):
"""
Adds the provided value to the hashmap
"""
key = self._hash(value)
self.hmap[key] = value
# TODO: Keep implementing
def size(self):
return self._size
@@ -26,6 +36,6 @@ class HashMap():
for letter in value:
h = (h << 4) + ord(letter)
return h
return h % self._hash_size

View File

@@ -30,7 +30,7 @@ class test_hash_map(unittest.TestCase):
self.assertEqual(hm._hash(value), ord(value))
value = "test"
self.assertEqual(hm._hash(value), 502948)
self.assertEqual(hm._hash(value), 208)
value = ""
self.assertRaises(Exception, lambda x : hm._hash(value))