SlideShare a Scribd company logo
This class will implement a hash table. The hash table will hold data items whose type is tuple.
This class will have following public methods and constructor. HashTable(int size) Finds the
smallest prime integer p whose value is at least size. Creates a hash table of size p where each
cell initially is NULL. It will determine the hash function to be used in the hash table by creating
the object new HashFunction(p). maxLoad () Returns the maximum load of the hash table
averageLoad () Returns the average load of the hash table size () returns the current size of the
hash table. numElements() returns the number of Tuples that are currently stored in the hash
table. loadFactor() return the load factor which is numElements()/size() add (Tuple t) Adds the
tuple t to the hash table; places t in the list pointed by the cell h(t.getKey()) where h is the hash
function that is being used. When the load factors become bigger than 0.7, then it
(approximately) doubles the size of the hash table and rehashes all the elements (tuples) to the
new hash table. The size of the new hash table must be: Smallest prime integer whose value is at
least twice the current size. search (int k) returns an array list of Tuples (in the hash table) whose
key equals k. If no such Tuples exist, returns an empty list. Note that the type of this method
must be ArrayList remove (Tuple t) Removes the Tuple t from the hash table.
Solution
HashTable.java
import java.math.BigInteger;
import java.util.ArrayList;
public class HashTable {
TupleCell[] hashTable; //Table to store Tuple cells
HashFunction hashFunction; //Current hash Function
public HashTable(int size) {
int actualSize = Math.abs(size);
while (!new BigInteger(Integer.toString(actualSize)).isProbablePrime(1))
actualSize++; //Determining next prime number
hashTable = new TupleCell[actualSize]; //Create tuple cells
hashFunction = new HashFunction(actualSize); //Create hash function
}
public int maxLoad() { //Maximum load in hash table
int maxValue = 0;
for (TupleCell tupleCell : hashTable) {
TupleCell node = tupleCell;
int count = 0;
while (node != null) {
count++;
node = node.nextCell;
}
if (count > maxValue) {
maxValue = count;
}
}
return maxValue;
}
public double averageLoad() { //avarage load in hash table
return ((double) numElements()) / size();
}
public int size() { //size of table
return hashTable.length;
}
public int numElements() { // number of elements in table
int count = 0;
for (TupleCell tupleCell : hashTable) {
TupleCell node = tupleCell;
while (node != null) {
count++;
node = node.nextCell;
}
}
return count;
}
public double loadFactor() { //load factor
return ((double) numElements()) / size();
}
public void add(Tuple t) {
TupleCell node = hashTable[hashFunction.hashIndex(t.getKey())];
if (node == null) {
hashTable[hashFunction.hashIndex(t.getKey())] = new TupleCell(t); //If hash table cell is
empty
} else {
while (node.nextCell != null) {
node = node.nextCell;
}
node.nextCell = new TupleCell(t); //adding new tuple to end of corresponding linked list
}
if (loadFactor() > 0.7) { //Rehash
int newSize = 2 * hashTable.length;
while (!new BigInteger(Integer.toString(newSize))
.isProbablePrime(1))
newSize++; //Finding next prime number
TupleCell[] newHashTable = new TupleCell[newSize];
HashFunction newHashFunction = new HashFunction(newSize);
rehash(newHashTable, newHashFunction); //Rehash based on new hashtable and new
hash function
hashTable = newHashTable;
hashFunction = newHashFunction;
}
}
private void rehash(TupleCell[] newHashTable, HashFunction newHashFunction) { //Rehash
funciton
for (TupleCell tupleCell : hashTable) { //iterating through each cell
TupleCell node = tupleCell;
while (node != null) { //iterating through each node in linked list
TupleCell reNode = newHashTable[newHashFunction
.hashIndex(node.t.getKey())];
if (reNode == null) {
newHashTable[newHashFunction.hashIndex(node.t.getKey())] = node; //Adding to
new hash table
} else {
while (reNode.nextCell != null) {
reNode = reNode.nextCell;
}
reNode.nextCell = node;
}
TupleCell temp = node;
node = node.nextCell;
temp.nextCell = null; //reseting next cell reference
}
}
}
public ArrayList search(int key) {
ArrayList returnList = new ArrayList();
TupleCell node = hashTable[hashFunction.hashIndex(key)]; //Getting corresponding linked
list
while (node != null) {
if (node.t.getKey() == key)
returnList.add(node.t); //match
node = node.nextCell;
}
return returnList;
}
public boolean remove(Tuple t) {
boolean found = false;
TupleCell node = hashTable[hashFunction.hashIndex(t.getKey())];
if (node != null) {
if (node.t.equals(t)) {
hashTable[hashFunction.hashIndex(t.getKey())] = node.nextCell; //if table cell
matches tuple
found = true;
} else {
TupleCell prevNode = node;
while (node != null) {
if (node.t.equals(t)) {
prevNode.nextCell = node.nextCell; //if node in linked list matches tuple
found = true;
break;
}
prevNode = node; //remove node
node = node.nextCell;
}
}
}
return found;
}
static class TupleCell { //Wrapper class for tuple with additional reference to next TupleCell -
for linked list
Tuple t;
TupleCell nextCell;
TupleCell(Tuple t) {
this.t = t;
}
}
}
class HashFunction { //Hash function class
int size;
public HashFunction(int p) {
this.size = p;
}
public int hashIndex(int key) { //key to index method
return Math.abs(key) % size;
}
}
Tuple.java
public class Tuple {
private int key;
public Tuple(int key){
this.key = key;
}
public int getKey() { //used by hash table
return key;
}
public String toString(){
return Integer.toString(key);
}
}

More Related Content

PDF
Fill in parameters Public New Hash table (int initial Capacity, floa.pdf
PDF
Complete code in Java The hashtable you'll be making will use String.pdf
PDF
using the code below write the public V add(K key, V value); that ad.pdf
PDF
The hashtable youll be making will use Strings as the keys and Obje.pdf
PDF
I have created a class hasdhedDictionary that implements the Diction.pdf
PDF
Assignment4 Assignment 4 Hashtables In this assignment we w.pdf
PDF
Given the code below create a method called, getCollisionCount that .pdf
PPTX
Hashing in Data Structure and Algorithm PPT
Fill in parameters Public New Hash table (int initial Capacity, floa.pdf
Complete code in Java The hashtable you'll be making will use String.pdf
using the code below write the public V add(K key, V value); that ad.pdf
The hashtable youll be making will use Strings as the keys and Obje.pdf
I have created a class hasdhedDictionary that implements the Diction.pdf
Assignment4 Assignment 4 Hashtables In this assignment we w.pdf
Given the code below create a method called, getCollisionCount that .pdf
Hashing in Data Structure and Algorithm PPT

Similar to This class will implement a hash table. The hash table will hold data.pdf (20)

PPT
Maps&hash tables
PDF
using the code below create a method called getCollisionCount that w.pdf
PPT
Ch17 Hashing
PPTX
Lecture14_15_Hashing.pptx
PPT
Hashing
PPTX
Hash table in java
PPTX
Presentation.pptx
PDF
COL106_Assignments.pdf
PDF
Algorithms notes tutorials duniya
PPTX
Hashing and Collision Advanced data structure and algorithm
PPTX
HASHING.ppt.pptx
PDF
Describe a data structure to represent sets of elements (each element.pdf
PPTX
hashing in data strutures advanced in languae java
PPTX
Unit4 Part3.pptx
PDF
Hash pre
PPTX
Presentation1
PPTX
18. Dictionaries, Hash-Tables and Set
DOCX
611+tutorial
PPTX
Hashing in datastructure
PDF
( PLEASE SHOW HOW TO IMPLEMENT THE DELETION FUNCTION )SAMPLE OUTPU.pdf
Maps&hash tables
using the code below create a method called getCollisionCount that w.pdf
Ch17 Hashing
Lecture14_15_Hashing.pptx
Hashing
Hash table in java
Presentation.pptx
COL106_Assignments.pdf
Algorithms notes tutorials duniya
Hashing and Collision Advanced data structure and algorithm
HASHING.ppt.pptx
Describe a data structure to represent sets of elements (each element.pdf
hashing in data strutures advanced in languae java
Unit4 Part3.pptx
Hash pre
Presentation1
18. Dictionaries, Hash-Tables and Set
611+tutorial
Hashing in datastructure
( PLEASE SHOW HOW TO IMPLEMENT THE DELETION FUNCTION )SAMPLE OUTPU.pdf
Ad

More from kisgstin23 (20)

PDF
John Smith wrote fraudulent checks and made false statements when ap.pdf
PDF
Describe the E-C and the players involved in the electrical and mech.pdf
PDF
In a large population, 59 of the people have been vaccinated. If 4 .pdf
PDF
Harden, Harden, & Harden is a venerable Wall Street stock brokerage .pdf
PDF
Every time we have to make a choice we are faced with an opportunity.pdf
PDF
Complete a Punnett square to show the genotypes and phenotypes expec.pdf
PDF
Did both the North and South initially go to war in 1861 over the is.pdf
PDF
Can really use some help with the following UNIXLINUX commands and .pdf
PDF
Canadian copyrights on music expire 50 years after the death of t.pdf
PDF
Below are common errors. State what was done incorrectly and correct.pdf
PDF
A linked stack is implemented using a standard Node class as follows.pdf
PDF
A. Karl Marx B. Max Weber C. Erik Olin Wright D. Kingsley Davi.pdf
PDF
3. Implement the UnsortedList class to store a list of numbers that .pdf
PDF
4 (Opportunity Cost) You can either spend Spring Break working at hom.pdf
PDF
You isolated an enveloped virus whose virions are able to hemadsorb .pdf
PDF
What professions were represented on the teamWhat role did each m.pdf
PDF
what is the threat and solution for when alice sends a password and .pdf
PDF
What is the mechanism of action of Staphylococcus alpha toxinSol.pdf
PDF
What is a charismatic leader What problems are charismatic leaders .pdf
PDF
What is the difference between sequential file access and random fil.pdf
John Smith wrote fraudulent checks and made false statements when ap.pdf
Describe the E-C and the players involved in the electrical and mech.pdf
In a large population, 59 of the people have been vaccinated. If 4 .pdf
Harden, Harden, & Harden is a venerable Wall Street stock brokerage .pdf
Every time we have to make a choice we are faced with an opportunity.pdf
Complete a Punnett square to show the genotypes and phenotypes expec.pdf
Did both the North and South initially go to war in 1861 over the is.pdf
Can really use some help with the following UNIXLINUX commands and .pdf
Canadian copyrights on music expire 50 years after the death of t.pdf
Below are common errors. State what was done incorrectly and correct.pdf
A linked stack is implemented using a standard Node class as follows.pdf
A. Karl Marx B. Max Weber C. Erik Olin Wright D. Kingsley Davi.pdf
3. Implement the UnsortedList class to store a list of numbers that .pdf
4 (Opportunity Cost) You can either spend Spring Break working at hom.pdf
You isolated an enveloped virus whose virions are able to hemadsorb .pdf
What professions were represented on the teamWhat role did each m.pdf
what is the threat and solution for when alice sends a password and .pdf
What is the mechanism of action of Staphylococcus alpha toxinSol.pdf
What is a charismatic leader What problems are charismatic leaders .pdf
What is the difference between sequential file access and random fil.pdf
Ad

Recently uploaded (20)

PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Computing-Curriculum for Schools in Ghana
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
Cell Structure & Organelles in detailed.
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
RMMM.pdf make it easy to upload and study
PPTX
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
PDF
Anesthesia in Laparoscopic Surgery in India
PPTX
Lesson notes of climatology university.
PDF
Classroom Observation Tools for Teachers
Module 4: Burden of Disease Tutorial Slides S2 2025
Pharmacology of Heart Failure /Pharmacotherapy of CHF
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Computing-Curriculum for Schools in Ghana
Supply Chain Operations Speaking Notes -ICLT Program
Cell Structure & Organelles in detailed.
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
VCE English Exam - Section C Student Revision Booklet
Abdominal Access Techniques with Prof. Dr. R K Mishra
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
RMMM.pdf make it easy to upload and study
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
Anesthesia in Laparoscopic Surgery in India
Lesson notes of climatology university.
Classroom Observation Tools for Teachers

This class will implement a hash table. The hash table will hold data.pdf

  • 1. This class will implement a hash table. The hash table will hold data items whose type is tuple. This class will have following public methods and constructor. HashTable(int size) Finds the smallest prime integer p whose value is at least size. Creates a hash table of size p where each cell initially is NULL. It will determine the hash function to be used in the hash table by creating the object new HashFunction(p). maxLoad () Returns the maximum load of the hash table averageLoad () Returns the average load of the hash table size () returns the current size of the hash table. numElements() returns the number of Tuples that are currently stored in the hash table. loadFactor() return the load factor which is numElements()/size() add (Tuple t) Adds the tuple t to the hash table; places t in the list pointed by the cell h(t.getKey()) where h is the hash function that is being used. When the load factors become bigger than 0.7, then it (approximately) doubles the size of the hash table and rehashes all the elements (tuples) to the new hash table. The size of the new hash table must be: Smallest prime integer whose value is at least twice the current size. search (int k) returns an array list of Tuples (in the hash table) whose key equals k. If no such Tuples exist, returns an empty list. Note that the type of this method must be ArrayList remove (Tuple t) Removes the Tuple t from the hash table. Solution HashTable.java import java.math.BigInteger; import java.util.ArrayList; public class HashTable { TupleCell[] hashTable; //Table to store Tuple cells HashFunction hashFunction; //Current hash Function public HashTable(int size) { int actualSize = Math.abs(size); while (!new BigInteger(Integer.toString(actualSize)).isProbablePrime(1)) actualSize++; //Determining next prime number hashTable = new TupleCell[actualSize]; //Create tuple cells hashFunction = new HashFunction(actualSize); //Create hash function } public int maxLoad() { //Maximum load in hash table int maxValue = 0; for (TupleCell tupleCell : hashTable) { TupleCell node = tupleCell; int count = 0;
  • 2. while (node != null) { count++; node = node.nextCell; } if (count > maxValue) { maxValue = count; } } return maxValue; } public double averageLoad() { //avarage load in hash table return ((double) numElements()) / size(); } public int size() { //size of table return hashTable.length; } public int numElements() { // number of elements in table int count = 0; for (TupleCell tupleCell : hashTable) { TupleCell node = tupleCell; while (node != null) { count++; node = node.nextCell; } } return count; } public double loadFactor() { //load factor return ((double) numElements()) / size(); } public void add(Tuple t) { TupleCell node = hashTable[hashFunction.hashIndex(t.getKey())]; if (node == null) { hashTable[hashFunction.hashIndex(t.getKey())] = new TupleCell(t); //If hash table cell is empty } else {
  • 3. while (node.nextCell != null) { node = node.nextCell; } node.nextCell = new TupleCell(t); //adding new tuple to end of corresponding linked list } if (loadFactor() > 0.7) { //Rehash int newSize = 2 * hashTable.length; while (!new BigInteger(Integer.toString(newSize)) .isProbablePrime(1)) newSize++; //Finding next prime number TupleCell[] newHashTable = new TupleCell[newSize]; HashFunction newHashFunction = new HashFunction(newSize); rehash(newHashTable, newHashFunction); //Rehash based on new hashtable and new hash function hashTable = newHashTable; hashFunction = newHashFunction; } } private void rehash(TupleCell[] newHashTable, HashFunction newHashFunction) { //Rehash funciton for (TupleCell tupleCell : hashTable) { //iterating through each cell TupleCell node = tupleCell; while (node != null) { //iterating through each node in linked list TupleCell reNode = newHashTable[newHashFunction .hashIndex(node.t.getKey())]; if (reNode == null) { newHashTable[newHashFunction.hashIndex(node.t.getKey())] = node; //Adding to new hash table } else { while (reNode.nextCell != null) { reNode = reNode.nextCell; } reNode.nextCell = node; } TupleCell temp = node; node = node.nextCell;
  • 4. temp.nextCell = null; //reseting next cell reference } } } public ArrayList search(int key) { ArrayList returnList = new ArrayList(); TupleCell node = hashTable[hashFunction.hashIndex(key)]; //Getting corresponding linked list while (node != null) { if (node.t.getKey() == key) returnList.add(node.t); //match node = node.nextCell; } return returnList; } public boolean remove(Tuple t) { boolean found = false; TupleCell node = hashTable[hashFunction.hashIndex(t.getKey())]; if (node != null) { if (node.t.equals(t)) { hashTable[hashFunction.hashIndex(t.getKey())] = node.nextCell; //if table cell matches tuple found = true; } else { TupleCell prevNode = node; while (node != null) { if (node.t.equals(t)) { prevNode.nextCell = node.nextCell; //if node in linked list matches tuple found = true; break; } prevNode = node; //remove node node = node.nextCell; } } }
  • 5. return found; } static class TupleCell { //Wrapper class for tuple with additional reference to next TupleCell - for linked list Tuple t; TupleCell nextCell; TupleCell(Tuple t) { this.t = t; } } } class HashFunction { //Hash function class int size; public HashFunction(int p) { this.size = p; } public int hashIndex(int key) { //key to index method return Math.abs(key) % size; } } Tuple.java public class Tuple { private int key; public Tuple(int key){ this.key = key; } public int getKey() { //used by hash table return key; } public String toString(){ return Integer.toString(key); } }