init commit
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
from MyLinkedList import DerekLinkedList
|
||||
|
||||
class DerekHashTable:
|
||||
def __init__(self) -> None:
|
||||
self.backingStore = [DerekLinkedList() for _ in range(36)] # Create a linked list backing for the hash table
|
||||
self.count = 0
|
||||
|
||||
def __iter__(self):
|
||||
for linkedList in self.backingStore: # Look at each linked list
|
||||
for data in linkedList: # Look at each item in the linked list
|
||||
yield data # Return the data from each cell
|
||||
|
||||
def _calcHash(self, key) -> int: # Use the built in hash function
|
||||
return hash(key) % 36 # Modulo the size of the hash array
|
||||
|
||||
def addItem(self, key, value):
|
||||
i = self._calcHash(key) # Calculate a hash/modulo and put in the correct list
|
||||
self.backingStore[i].append(key, value)
|
||||
self.count += 1
|
||||
|
||||
def getItem(self, key):
|
||||
i = self._calcHash(key) # Calculate the hash/modulo to get the data from the linked list
|
||||
return self.backingStore[i].get(key)
|
||||
|
||||
def remItem(self, key):
|
||||
i = self._calcHash(key) # Calculate the hash/modulo to get the list
|
||||
self.backingStore[i].remove(key) # Remove the item from the list
|
||||
self.count -= 1
|
||||
Reference in New Issue
Block a user