# 7.12. Hash table

> Design and implement a hash table which uses chaining (linked lists) to handle collissions

## Non-OOP solution

```python
hash_num = 10
def hash_table(vals):
    items = [] * hash_num
    for v in vals:
        mod = v % hash_num
        if items[mod]:
            items[mod].append(v)
            continue
        items[mod] = [v]
    return items
```

## OOP solution

```python
class hashTable:

    def __init__(self, hash_num=10):
        self.items = []
        self.hash_num = hash_num

    def create_hashtable(self, vals):
        items = [[] * hash_num]
        for v in vals:
            items[v % hash_num].append(v)
        return items

def main():
    vals = [1,3,4,5,10,11,13,14]
    hasht = hashTable()
    items = hasht.create_hashtable(vals)
    print(items)

if __name__ == "__main__":
    main()
```
