The sorted list class from the last lab has faster get operations than an unsorted list because of binary search. However, the add operations are slower than on an unsorted list. By using a hash function to compute the location of an object in constant time, hash tables can have both fast add and get operations. In this lab you will implement a simple version of a hash table.
The file Hashtable.java contains
the outline for a hash table. There is
an ArrayList
of LinkedList instance variable,
called table, for storing objects according to their hash
codes. The constructor for the hash table takes the capacity, or
number of bins, of the table and initializes the array list to
contain that many empty linked lists. The constructor also takes
the minimum and maximum hash codes that can be added to the
hash table. These values are stored in instance variables and are
used to compute the bin of an object in the hash table.
The toString
method prints the contents of the table.
You must complete each of the following methods:
bin
method should return the index of the
bin that the specified object belongs to. The method should use
the hashCode
method of the Object class to get the hash code of the specified
object. It should then convert the hash code to a bin using
the initMinHashCode
and initMaxHashCode
instance variables and the size
of the table instance variable.add
method should add the specified object
to the end of the bin the object belongs in. If the object is
null or if the object's hash code is outside of the hash table's
range, it should throw an exception. Test thoroughly before
proceeding. get
method should return the first
equivalent object in the bin that the specified object belongs
to. To determine if two objects are equivalent use
the equals
method of the Object class. If there is not an equivalent
object in the hash table, it should return null. Thoroughly test
before proceeding.iterator
method should return a new
HashtableIterator that begins iterating over the hash table at
the first object in the bin that the specified object belongs
to. Test thoroughly before submitting.Submit a zip file of your code on the course Inquire site that uses your last names as the file name.