Develop an algorithm to search and remove data from a hash table using the open addressing technique.
Aim
Implement a hash table using open addressing with linear probing.
Prerequisites
To solve this activity, you have to implement the following methods in the OpenAddrHashTable.java file:
public void put(K key, V value) {
//...
}
private int searchPosition(K key) {
//...
}
public void remove(K key) {
//...
}
public Optional get(K key) {
//...
}
Steps for Completion
- Study the pseudocode shown in Snippet 3.3 and Snippet 3.4 (shown below) and implement them in Java.
- The container
class
OpenAddrPair
will hold your key and value in the hash table. - Have a flag on this container to indicate when an item is deleted.
- Use this flag in the
put
operation to overwrite it if it is deleted. You can use this flag to optimize yourget
method using thefilter
method.
insert(key, value, array)
s = length(array)
hashValue = hash(key, s)
i = 0
while (i < s and array[(hashValue + i) mod s] != null)
i = i + l
if (i < s) array[(hashValue + i) mod s] = (key, value)
Snippet 3.3: Psuedocode for inserting using linear probing
search(key, array)
s = length(array)
hashValue = hash(key, s)
i = 0
while (i < s and array[(hashValue + i) mod s] != null and array[(hashValue + i) mod s].key != key)
i = i + 1
keyValue = array[(hashValue + i) mod s]
if (keyValue != null && keyValue.key == key) return keyValue.value
else return null
Snippet 3.4: Solution pseudocode for searching using linear probing
Grading
Complete each task listed below. Each task contains automated checks which are used to calculate your grade. When you have completed each task by clicking the checkbox, open the task list panel on the left navigation bar and click the “Submit” button.
Tasks
New OpenAddrHashTable
objects are empty.
1
Implement the following methods in the OpenAddrHashTable
class
:
put
searchPosition
get
remove