One of the challenges in programs is to store data in a structure that allows fast and efficient searching. Hash tables provide this type of performance by storing data in buckets based on a value called a hash key. The bucket containing a specific data entry is identified by a hash key, which is generated by a hash function. Finding a data entry is then a simple matter of taking a hash key, determining which hash table bucket contains that key value, and then sequentially searching a relatively small linked list in the appropriate hash table bucket. Think of the entire hash table as a list full of small linked lists that are each identified by a value calculated by a hash function that takes a key value as input and returns a bucket identifier.
For this assignment, you will complete the following:
- Create a flowchart to demonstrate the operation of a hash structure. This flowchart should include operations to insert and remove entries in the hash structure.
- Create a flowchart to demonstrate the operation of the hash function (the hash key generator).
- Write a complete Java program to implement a hash table data structure for String data.
- Your program should demonstrate insertion and removal of data.
- A linked list must be used in the hash buckets to resolve duplicate data collisions.
- Note: You may not use the Java HashTable or HashMap or other similar built-in Java data structures for your solution. The intention of this assignment is for you to demonstrate your ability to write the code for your own hash table functionality.
- Submit your flowcharts and Java source code in a single MS Word document for grading.