1) Implement a class called HashTableChained, a hash table with chaining. HashTableChained implements an interface called Dictionary, which defines the set of methods (like insert(), find() and remove()) that a dictionary needs.
insert() an entry (key + value) into a hash table.
find() an entry with a specified key.
remove() an entry with a specified key.
isEmpty() return the size() of the hash table (in entries).
makeEmpty() removes every entry from a hash table.
There are two HashTableChained constructors. One constructor lets applications specify an estimate of the number of entries that will be
stored in the hash table; the other uses a default size. Both constructors should create a hash table that uses a prime number of buckets. In
the first constructor, shoot for a load factor between 0.5 and 1. In the second constructor, shoot for around 100 buckets.
2) Impalement a class to test your hash table class, make sure to test it with sufficient number of entries and print out your test report