Source of 23.14.java


  1: // @author Frank M. Carrano, Timothy M. Henry
  2: // @version 5.0

  4: // Precondition: checkIntegrity has been called.
  5: private void enlargeHashTable()
  6: {
  7:    Entry<K, V>[] oldTable = hashTable;
  8:    int oldSize = hashTable.length;
  9:    int newSize = getNextPrime(oldSize + oldSize);
 10:    checkSize(newSize);

 12:    // The cast is safe because the new array contains null entries
 13:    @SuppressWarnings("unchecked")
 14:    Entry<K, V>[] temp = (Entry<K, V>[])new Entry[newSize];
 15:    hashTable = temp;
 16:    numberOfEntries = 0; // Reset number of dictionary entries, since
 17:                         // it will be incremented by add during rehash
 18:    // Rehash dictionary entries from old array to the new and bigger array;
 19:    // skip elements that contain null or AVAILABLE
 20:    for (int index = 0; index < oldSize; index++)
 21:    {
 22:       if ( (oldTable[index] != null) && oldTable[index] != AVAILABLE )
 23:          add(oldTable[index].getKey(), oldTable[index].getValue());
 24:    } // end for
 25: } // end enlargeHashTable