1: public V add(K key, V value) 2: { 3: checkInitialization(); 4: if ((key == null) || (value == null)) 5: throw new IllegalArgumentException("Cannot add null to a dictionary."); 6: else 7: { 8: V oldValue; // Value to return 9: 10: int index = getHashIndex(key); 11: index = probe(index, key); // Check for and resolve collision 12: 13: // Assertion: index is within legal range for hashTable 14: assert (index >= 0) && (index < hashTable.length); 15: 16: if ( (hashTable[index] == null) || hashTable[index].isRemoved()) 17: { // Key not found, so insert new entry 18: hashTable[index] = new TableEntry<>(key, value); 19: numberOfEntries++; 20: oldValue = null; 21: } 22: else 23: { // Key found; get old value for return and then replace it 24: oldValue = hashTable[index].getValue(); 25: hashTable[index].setValue(value); 26: } // end if 27: 28: // Ensure that hash table is large enough for another add 29: if (isHashTableTooFull()) 30: enlargeHashTable(); 31: 32: return oldValue; 33: } // end if 34: } // end add 35: // Version 4.0