1: // Precondition: checkInitialization has been called. 2: private void enlargeHashTable() 3: { 4: TableEntry<K, V>[] oldTable = hashTable; 5: int oldSize = hashTable.length; 6: int newSize = getNextPrime(oldSize + oldSize); 7: checkSize(newSize); 8: 9: // The cast is safe because the new array contains null entries 10: @SuppressWarnings("unchecked") 11: TableEntry<K, V>[] temp = (TableEntry<K, V>[])new TableEntry[newSize]; // Increase size of array 12: hashTable = temp; 13: numberOfEntries = 0; // Reset number of dictionary entries, since 14: // it will be incremented by add during rehash 15: 16: // Rehash dictionary entries from old array to the new and bigger array; 17: // skip both null locations and removed entries 18: for (int index = 0; index < oldSize; index++) 19: { 20: if ( (oldTable[index] != null) && oldTable[index].isIn() ) 21: add(oldTable[index].getKey(), oldTable[index].getValue()); 22: } // end for 23: } // end enlargeHashTable 24: // Version 4.0