SlideShare a Scribd company logo
using the code below write the public V add(K key, V value); that adds a new entry into
hashtable if the table (hashTable[index] != null) && (hashTable[index] != AVAILABLE
if the key is the same as keyindex inside the hash replace the old value with the new value
if the key is different from the keyindex go to the next index and count for collisions until will
you find a null space inside the hashtable index
import java.util.Iterator;
public interface DictionaryInterface
{
/** Adds a new entry to this dictionary. If the given search key already
exists in the dictionary, replaces the corresponding value.
@param key An object search key of the new entry.
@param value An object associated with the search key.
@return Either null if the new entry was added to the dictionary
or the value that was associated with key if that value
was replaced. */
public V add(K key, V value);
/** Removes a specific entry from this dictionary.
@param key An object search key of the entry to be removed.
@return Either the value that was associated with the search key
or null if no such object exists. */
public V remove(K key);
/** Retrieves from this dictionary the value associated with a given
search key.
@param key An object search key of the entry to be retrieved.
@return Either the value that is associated with the search key
or null if no such object exists. */
public V getValue(K key);
/** Sees whether a specific entry is in this dictionary.
@param key An object search key of the desired entry.
@return True if key is associated with an entry in the dictionary. */
public boolean contains(K key);
/** Creates an iterator that traverses all search keys in this dictionary.
@return An iterator that provides sequential access to the search
keys in the dictionary. */
public Iterator getKeyIterator();
/** Creates an iterator that traverses all values in this dictionary.
@return An iterator that provides sequential access to the values
in this dictionary. */
public Iterator getValueIterator();
/** Sees whether this dictionary is empty.
@return True if the dictionary is empty. */
public boolean isEmpty();
/** Gets the size of this dictionary.
@return The number of entries (key-value pairs) currently
in the dictionary. */
public int getSize();
/** Removes all entries from this dictionary. */
public void clear();
} // end DictionaryInterface
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* A class that implements the ADT dictionary by using hashing and
* linear probing to resolve collisions.
* The dictionary is unsorted and has distinct search key.
Search keys and associated values are not null.
*/
public class HashedDictionary implements DictionaryInterface
{
// The dictionary:
private int numberOfEntries;
private static final int DEFAULT_CAPACITY = 5; // Must be prime
private static final int MAX_CAPACITY = 10000;
// The hash table:
private Entry[] hashTable;
private int tableSize; // Must be prime
private static final int MAX_SIZE = 2 * MAX_CAPACITY;
private boolean integrityOK = false;
private static final double MAX_LOAD_FACTOR = 0.5; // Fraction of
// hash table that can be filled
private int collisionCount;
protected final Entry AVAILABLE = new Entry<>(null, null);
// Counter to keep track of collisions
public HashedDictionary()
{
this(DEFAULT_CAPACITY); // Call next constructor
} // end default constructor
public HashedDictionary(int initialCapacity)
{
initialCapacity = checkCapacity(initialCapacity);
numberOfEntries = 0; // Dictionary is empty
// Set up hash table:
// Initial size of hash table is same as initialCapacity if it is prime;
// otherwise increase it until it is prime size
tableSize = getNextPrime(initialCapacity);
checkSize(tableSize); // Check that size is not too large
// The cast is safe because the new array contains null entries
@SuppressWarnings("unchecked")
Entry[] temp = (Entry[])new Entry[tableSize];
hashTable = temp;
integrityOK = true;
collisionCount = 0;
} // end constructor
/* Implementations of methods in DictionaryInterface are here. . . .*/
public V add(K key, V value)
{//CODE IMPLEMENTATION
}//end of add
public boolean isEmpty()
{
return this.numberOfEntries == 0;
}//end isEmpty
public Iterator getValueIterator()
{
throw new NoSuchElementException("Value Iterator Not Implemented");
}//end valueIterator
public void clear()
{
checkIntegrity();
for (int index = 0; index < this.hashTable.length; index++)
{
hashTable[index] = null;
}//end of for
this.numberOfEntries = 0;
}//end clear
public Iterator getKeyIterator()
{
return new KeyIterator();
}//end iterator
public boolean contains(K key)
{
return getValue(key) != null;
}//end contains
public int getSize()
{
return this.numberOfEntries;
}//end getSize
public V remove(K key) {
checkIntegrity();
int index = getHashIndex(key);
while (hashTable[index] != null) {
if (hashTable[index].getKey().equals(key)) {
V value = hashTable[index].getValue();
hashTable[index].setValue(null);
hashTable[index] = AVAILABLE;
numberOfEntries--;
return value;
}
index = (index + 1) % hashTable.length;
}
// If the key is not found, return null
return null;
}
public V getValue(K key)
{
checkIntegrity();
V result = null;
int index = getHashIndex(key);
if ((hashTable[index] != null) && (hashTable[index] != AVAILABLE))
result = hashTable[index].getValue(); // Key found; get value
// Else key not found; return null
return result;
} // end getValue
/* END of Implementations of dictionary methods are here^. . . . */
/* Implementations of private methods are here. . . . */
//precondition: checkIntegrity has been called
private void enlargeHashTable()
{
Entry[] oldTable = hashTable;
int oldSize = hashTable.length;
int newSize = getNextPrime(oldSize + oldSize);
checkSize(newSize);
//The cast is safe because the new array contains null entries
@SuppressWarnings("unchecked")
Entry[] temp = (Entry[]) new Entry[newSize];
hashTable = temp;
numberOfEntries = 0;//reset number of dictionary entries, since it will be incremented by add
during rehash
//rehash dictionary entries from old array to the new and bigger array;
//skip elements that contain null or available
for(int index = 0; index < oldSize; index++)
{
if((oldTable[index] != null) && (oldTable[index] != AVAILABLE))
{
add(oldTable[index].getKey(), oldTable[index].getValue());
}
}// end for
}//end enlargeHashTable
private int getHashIndex(K key)
{
int hashIndex = key.hashCode() % hashTable.length;
if(hashIndex < 0)
{
hashIndex = hashIndex + hashTable.length;
}
return hashIndex;
}//end getHashIndex
private void checkIntegrity()
{
if(!integrityOK)
{
throw new SecurityException("objecy is currupt");
}
}//end checkIntegrity
private boolean isHashTableTooFull()
{
if((numberOfEntries / hashTable.length) >= MAX_LOAD_FACTOR)
{
return true;
}
else
{
return false;
}
}//end isHashTableTooFull
private int checkSize(int size)
{
if(size >= MAX_SIZE){throw new IllegalStateException("Dictionary has become too large.");}
else{return size;}
}//end checksize
private int checkCapacity(int cap)
{
if(cap < DEFAULT_CAPACITY)
{
cap = DEFAULT_CAPACITY;
}
else if (cap > MAX_CAPACITY)
{
throw new IllegalStateException("Attempt to create a dictionary " + "whose capacity is larger
than " + MAX_CAPACITY);
}
return cap;
}//end checkcap
private int getNextPrime(int integer)
{
// if even, add 1 to make od
if (integer % 2 == 0)
{
integer++;
} // end if
// test odd integers
while (!isPrime(integer))
{
integer = integer + 2;
} // end while
return integer;
}//end getnextprime
private boolean isPrime(int integer)
{
boolean result;
boolean done = false;
// 1 and even numbers are not prime
if ( (integer == 1) || (integer % 2 == 0) )
{
result = false;
}
// 2 and 3 are prime
else if ( (integer == 2) || (integer == 3) )
{
result = true;
}
else // integer is odd and >= 5
{
assert (integer % 2 != 0) && (integer >= 5);
// a prime is odd and not divisible by every odd integer up to its square root
result = true; // assume prime
for (int divisor = 3; !done && (divisor * divisor <= integer); divisor = divisor + 2)
{
if (integer % divisor == 0)
{
result = false; // divisible; not prime
done = true;
} // end if
} // end for
} // end if
return result;
} // end isPrime
/* END of Implementations of private methods are here^. . . . */
protected final class Entry
{
private K key;
private V value;
private Entry(K searchKey, V dataValue)
{
key = searchKey;
value = dataValue;
}//end contructor
private K getKey()
{
return key;
}//end getKey
private V getValue()
{
return value;
}//end value
private void setValue(V newValue)
{
value = newValue;
}//end setValue
} // end Entry
private class KeyIterator implements Iterator
{
private int currentIndex; // Current position in hash table
private int numberLeft; // Number of entries left in iteration
private KeyIterator()
{
currentIndex = 0;
numberLeft = numberOfEntries;
} // end default constructor
public boolean hasNext()
{
return numberLeft > 0;
} // end hasNext
public void remove()
{
throw new UnsupportedOperationException();
} // end remove
public K next()
{
K result = null;
if (hasNext())
{
// Skip table locations that do not contain a current entry
while ( (hashTable[currentIndex] == null) ||
(hashTable[currentIndex] == AVAILABLE) )
{
currentIndex++;
} // end while
result = hashTable[currentIndex].getKey();
numberLeft--;
currentIndex++;
}
else
throw new NoSuchElementException();
return result;
} // end next
} // end KeyIterator
//collision method
public int getCollisionCount() {
return collisionCount;
}//end collisionCount
} // end HashedDictionary

More Related Content

PDF
Given the code below create a method called, getCollisionCount that .pdf
PDF
I have created a class hasdhedDictionary that implements the Diction.pdf
PDF
using the code below create a method called getCollisionCount that w.pdf
PDF
Complete code in Java The hashtable you'll be making will use String.pdf
PDF
The hashtable youll be making will use Strings as the keys and Obje.pdf
PDF
You are to write an efficient program that will read a dictionary of.pdf
PDF
package singlylinkedlist; public class Node { public String valu.pdf
PDF
Answer this question for quality assurance. Include a final applicat.pdf
Given the code below create a method called, getCollisionCount that .pdf
I have created a class hasdhedDictionary that implements the Diction.pdf
using the code below create a method called getCollisionCount that w.pdf
Complete code in Java The hashtable you'll be making will use String.pdf
The hashtable youll be making will use Strings as the keys and Obje.pdf
You are to write an efficient program that will read a dictionary of.pdf
package singlylinkedlist; public class Node { public String valu.pdf
Answer this question for quality assurance. Include a final applicat.pdf

Similar to using the code below write the public V add(K key, V value); that ad.pdf (20)

PDF
Program 4You are to write an efficient program that will read a di.pdf
PDF
So I have this code(StackInAllSocks) and I implemented the method but.pdf
PDF
Describe a data structure to represent sets of elements (each element.pdf
PDF
Please help me to make a programming project I have to sue them today- (1).pdf
PDF
This file contains a complete array-based MultiSet, but not the code.pdf
PDF
This project will implement a simple usernamepassword lookup system.pdf
PDF
this file has a complete array-based MultiSet, but not the code need.pdf
PDF
How do I fix it in LinkedList.javathis is what i didLabProgra.pdf
DOCX
Write a program that will test a name) method no sorting routine from.docx
PDF
How do I fix it in LinkedList.javaLabProgram.javaLinkedList.jav.pdf
PPTX
Object Oriented Programming Using C++: C++ STL Programming.pptx
DOCX
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
DOCX
Please add-modify the following to the original code using C# 1- Delet.docx
RTF
AutoComplete
DOCX
Write a program to find the number of comparisons using the binary se.docx
PDF
Given below is the completed implementation of MyLinkedList class. O.pdf
DOCX
META-INFMANIFEST.MFManifest-Version 1.0.classpath.docx
DOCX
all i need is these two filesCreate VectorContainer.hppCreat.docx
PDF
LabProgram.javaimport java.util.NoSuchElementException;public .pdf
PDF
How do I fix it in javaLinkedList.java Defines a doubl.pdf
Program 4You are to write an efficient program that will read a di.pdf
So I have this code(StackInAllSocks) and I implemented the method but.pdf
Describe a data structure to represent sets of elements (each element.pdf
Please help me to make a programming project I have to sue them today- (1).pdf
This file contains a complete array-based MultiSet, but not the code.pdf
This project will implement a simple usernamepassword lookup system.pdf
this file has a complete array-based MultiSet, but not the code need.pdf
How do I fix it in LinkedList.javathis is what i didLabProgra.pdf
Write a program that will test a name) method no sorting routine from.docx
How do I fix it in LinkedList.javaLabProgram.javaLinkedList.jav.pdf
Object Oriented Programming Using C++: C++ STL Programming.pptx
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
Please add-modify the following to the original code using C# 1- Delet.docx
AutoComplete
Write a program to find the number of comparisons using the binary se.docx
Given below is the completed implementation of MyLinkedList class. O.pdf
META-INFMANIFEST.MFManifest-Version 1.0.classpath.docx
all i need is these two filesCreate VectorContainer.hppCreat.docx
LabProgram.javaimport java.util.NoSuchElementException;public .pdf
How do I fix it in javaLinkedList.java Defines a doubl.pdf
Ad

More from amirthagiftsmadurai (20)

PDF
value if lifo for its inverntory. the inventory on12312020 was $70.pdf
PDF
Utilizando los datos comerciales del Observatorio de Complejidad Eco.pdf
PDF
Usted es accionista del 5 de Company XYZ, Inc. La compa��a planea .pdf
PDF
Using this example code in Xcode, please help with this project wher.pdf
PDF
using the the periodic method what is the journal entryusing th.pdf
PDF
Using the properties of Regular languages, mention which properties .pdf
PDF
Using the information displayed on the table below, calculate the Un.pdf
PDF
Using the Ceasar Cipher encryption algorithm, you take each characte.pdf
PDF
Using the accidentdata dataset how to conduct a comprehensive EDA .pdf
PDF
Vuelva a resolver el problema 15 de la secci�n 2.2 de su texto, que .pdf
PDF
Vuelve a escribir las oraciones usando los verbos provistos entre pa.pdf
PDF
We aim to upgrade the function �insert� of the class orderedLinkedLi.pdf
PDF
Verdadero o falso 7. Los errores son errores no intencionales. .pdf
PDF
Verdadero o falso todas las especies, independientemente de los tax.pdf
PDF
Warren Buffy is an enormously wealthy investor who has built his for.pdf
PDF
Watch Podcast SpanxWrite a response to the podcast using the cor.pdf
PDF
Vincent van Gogh es uno de los artistas postimpresionistas m�s conoc.pdf
PDF
Wanda, a retired electrical engineer, suffered a stroke, Her memorie.pdf
PDF
W1X2Y3ZA chemolithoautotroph uses as an energy source, as an electr.pdf
PDF
Verdadero Falso. Dado que Yt es una serie de tiempo multivariante, s.pdf
value if lifo for its inverntory. the inventory on12312020 was $70.pdf
Utilizando los datos comerciales del Observatorio de Complejidad Eco.pdf
Usted es accionista del 5 de Company XYZ, Inc. La compa��a planea .pdf
Using this example code in Xcode, please help with this project wher.pdf
using the the periodic method what is the journal entryusing th.pdf
Using the properties of Regular languages, mention which properties .pdf
Using the information displayed on the table below, calculate the Un.pdf
Using the Ceasar Cipher encryption algorithm, you take each characte.pdf
Using the accidentdata dataset how to conduct a comprehensive EDA .pdf
Vuelva a resolver el problema 15 de la secci�n 2.2 de su texto, que .pdf
Vuelve a escribir las oraciones usando los verbos provistos entre pa.pdf
We aim to upgrade the function �insert� of the class orderedLinkedLi.pdf
Verdadero o falso 7. Los errores son errores no intencionales. .pdf
Verdadero o falso todas las especies, independientemente de los tax.pdf
Warren Buffy is an enormously wealthy investor who has built his for.pdf
Watch Podcast SpanxWrite a response to the podcast using the cor.pdf
Vincent van Gogh es uno de los artistas postimpresionistas m�s conoc.pdf
Wanda, a retired electrical engineer, suffered a stroke, Her memorie.pdf
W1X2Y3ZA chemolithoautotroph uses as an energy source, as an electr.pdf
Verdadero Falso. Dado que Yt es una serie de tiempo multivariante, s.pdf
Ad

Recently uploaded (20)

PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PPTX
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
Insiders guide to clinical Medicine.pdf
PPTX
PPH.pptx obstetrics and gynecology in nursing
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
Complications of Minimal Access Surgery at WLH
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
BOWEL ELIMINATION FACTORS AFFECTING AND TYPES
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
102 student loan defaulters named and shamed – Is someone you know on the list?
O7-L3 Supply Chain Operations - ICLT Program
Insiders guide to clinical Medicine.pdf
PPH.pptx obstetrics and gynecology in nursing
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Complications of Minimal Access Surgery at WLH
Supply Chain Operations Speaking Notes -ICLT Program
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
STATICS OF THE RIGID BODIES Hibbelers.pdf
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
human mycosis Human fungal infections are called human mycosis..pptx
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf

using the code below write the public V add(K key, V value); that ad.pdf

  • 1. using the code below write the public V add(K key, V value); that adds a new entry into hashtable if the table (hashTable[index] != null) && (hashTable[index] != AVAILABLE if the key is the same as keyindex inside the hash replace the old value with the new value if the key is different from the keyindex go to the next index and count for collisions until will you find a null space inside the hashtable index import java.util.Iterator; public interface DictionaryInterface { /** Adds a new entry to this dictionary. If the given search key already exists in the dictionary, replaces the corresponding value. @param key An object search key of the new entry. @param value An object associated with the search key. @return Either null if the new entry was added to the dictionary or the value that was associated with key if that value was replaced. */ public V add(K key, V value); /** Removes a specific entry from this dictionary. @param key An object search key of the entry to be removed. @return Either the value that was associated with the search key or null if no such object exists. */ public V remove(K key); /** Retrieves from this dictionary the value associated with a given search key. @param key An object search key of the entry to be retrieved. @return Either the value that is associated with the search key or null if no such object exists. */ public V getValue(K key); /** Sees whether a specific entry is in this dictionary. @param key An object search key of the desired entry. @return True if key is associated with an entry in the dictionary. */ public boolean contains(K key);
  • 2. /** Creates an iterator that traverses all search keys in this dictionary. @return An iterator that provides sequential access to the search keys in the dictionary. */ public Iterator getKeyIterator(); /** Creates an iterator that traverses all values in this dictionary. @return An iterator that provides sequential access to the values in this dictionary. */ public Iterator getValueIterator(); /** Sees whether this dictionary is empty. @return True if the dictionary is empty. */ public boolean isEmpty(); /** Gets the size of this dictionary. @return The number of entries (key-value pairs) currently in the dictionary. */ public int getSize(); /** Removes all entries from this dictionary. */ public void clear(); } // end DictionaryInterface import java.util.Iterator; import java.util.NoSuchElementException; /** * A class that implements the ADT dictionary by using hashing and * linear probing to resolve collisions. * The dictionary is unsorted and has distinct search key. Search keys and associated values are not null. */ public class HashedDictionary implements DictionaryInterface { // The dictionary: private int numberOfEntries; private static final int DEFAULT_CAPACITY = 5; // Must be prime private static final int MAX_CAPACITY = 10000; // The hash table: private Entry[] hashTable; private int tableSize; // Must be prime
  • 3. private static final int MAX_SIZE = 2 * MAX_CAPACITY; private boolean integrityOK = false; private static final double MAX_LOAD_FACTOR = 0.5; // Fraction of // hash table that can be filled private int collisionCount; protected final Entry AVAILABLE = new Entry<>(null, null); // Counter to keep track of collisions public HashedDictionary() { this(DEFAULT_CAPACITY); // Call next constructor } // end default constructor public HashedDictionary(int initialCapacity) { initialCapacity = checkCapacity(initialCapacity); numberOfEntries = 0; // Dictionary is empty // Set up hash table: // Initial size of hash table is same as initialCapacity if it is prime; // otherwise increase it until it is prime size tableSize = getNextPrime(initialCapacity); checkSize(tableSize); // Check that size is not too large // The cast is safe because the new array contains null entries @SuppressWarnings("unchecked") Entry[] temp = (Entry[])new Entry[tableSize]; hashTable = temp; integrityOK = true; collisionCount = 0; } // end constructor /* Implementations of methods in DictionaryInterface are here. . . .*/
  • 4. public V add(K key, V value) {//CODE IMPLEMENTATION }//end of add public boolean isEmpty() { return this.numberOfEntries == 0; }//end isEmpty public Iterator getValueIterator() { throw new NoSuchElementException("Value Iterator Not Implemented"); }//end valueIterator public void clear() { checkIntegrity(); for (int index = 0; index < this.hashTable.length; index++) { hashTable[index] = null; }//end of for this.numberOfEntries = 0; }//end clear public Iterator getKeyIterator() { return new KeyIterator(); }//end iterator public boolean contains(K key) { return getValue(key) != null; }//end contains public int getSize() {
  • 5. return this.numberOfEntries; }//end getSize public V remove(K key) { checkIntegrity(); int index = getHashIndex(key); while (hashTable[index] != null) { if (hashTable[index].getKey().equals(key)) { V value = hashTable[index].getValue(); hashTable[index].setValue(null); hashTable[index] = AVAILABLE; numberOfEntries--; return value; } index = (index + 1) % hashTable.length; } // If the key is not found, return null return null; } public V getValue(K key) { checkIntegrity(); V result = null; int index = getHashIndex(key); if ((hashTable[index] != null) && (hashTable[index] != AVAILABLE)) result = hashTable[index].getValue(); // Key found; get value // Else key not found; return null return result; } // end getValue /* END of Implementations of dictionary methods are here^. . . . */
  • 6. /* Implementations of private methods are here. . . . */ //precondition: checkIntegrity has been called private void enlargeHashTable() { Entry[] oldTable = hashTable; int oldSize = hashTable.length; int newSize = getNextPrime(oldSize + oldSize); checkSize(newSize); //The cast is safe because the new array contains null entries @SuppressWarnings("unchecked") Entry[] temp = (Entry[]) new Entry[newSize]; hashTable = temp; numberOfEntries = 0;//reset number of dictionary entries, since it will be incremented by add during rehash //rehash dictionary entries from old array to the new and bigger array; //skip elements that contain null or available for(int index = 0; index < oldSize; index++) { if((oldTable[index] != null) && (oldTable[index] != AVAILABLE)) { add(oldTable[index].getKey(), oldTable[index].getValue()); } }// end for }//end enlargeHashTable private int getHashIndex(K key) { int hashIndex = key.hashCode() % hashTable.length; if(hashIndex < 0) { hashIndex = hashIndex + hashTable.length;
  • 7. } return hashIndex; }//end getHashIndex private void checkIntegrity() { if(!integrityOK) { throw new SecurityException("objecy is currupt"); } }//end checkIntegrity private boolean isHashTableTooFull() { if((numberOfEntries / hashTable.length) >= MAX_LOAD_FACTOR) { return true; } else { return false; } }//end isHashTableTooFull private int checkSize(int size) { if(size >= MAX_SIZE){throw new IllegalStateException("Dictionary has become too large.");} else{return size;} }//end checksize
  • 8. private int checkCapacity(int cap) { if(cap < DEFAULT_CAPACITY) { cap = DEFAULT_CAPACITY; } else if (cap > MAX_CAPACITY) { throw new IllegalStateException("Attempt to create a dictionary " + "whose capacity is larger than " + MAX_CAPACITY); } return cap; }//end checkcap private int getNextPrime(int integer) { // if even, add 1 to make od if (integer % 2 == 0) { integer++; } // end if // test odd integers while (!isPrime(integer)) { integer = integer + 2; } // end while return integer; }//end getnextprime
  • 9. private boolean isPrime(int integer) { boolean result; boolean done = false; // 1 and even numbers are not prime if ( (integer == 1) || (integer % 2 == 0) ) { result = false; } // 2 and 3 are prime else if ( (integer == 2) || (integer == 3) ) { result = true; } else // integer is odd and >= 5 { assert (integer % 2 != 0) && (integer >= 5); // a prime is odd and not divisible by every odd integer up to its square root result = true; // assume prime for (int divisor = 3; !done && (divisor * divisor <= integer); divisor = divisor + 2) { if (integer % divisor == 0) { result = false; // divisible; not prime done = true; } // end if } // end for } // end if return result; } // end isPrime /* END of Implementations of private methods are here^. . . . */ protected final class Entry {
  • 10. private K key; private V value; private Entry(K searchKey, V dataValue) { key = searchKey; value = dataValue; }//end contructor private K getKey() { return key; }//end getKey private V getValue() { return value; }//end value private void setValue(V newValue) { value = newValue; }//end setValue } // end Entry private class KeyIterator implements Iterator { private int currentIndex; // Current position in hash table private int numberLeft; // Number of entries left in iteration private KeyIterator() { currentIndex = 0; numberLeft = numberOfEntries; } // end default constructor public boolean hasNext() { return numberLeft > 0; } // end hasNext
  • 11. public void remove() { throw new UnsupportedOperationException(); } // end remove public K next() { K result = null; if (hasNext()) { // Skip table locations that do not contain a current entry while ( (hashTable[currentIndex] == null) || (hashTable[currentIndex] == AVAILABLE) ) { currentIndex++; } // end while result = hashTable[currentIndex].getKey(); numberLeft--; currentIndex++; } else throw new NoSuchElementException(); return result; } // end next } // end KeyIterator //collision method public int getCollisionCount() { return collisionCount; }//end collisionCount } // end HashedDictionary