1: // @author Frank M. Carrano, Timothy M. Henry
2: // @version 5.0
3: public V add(K key, V value)
4: {
5: checkIntegrity();
6: if ((key == null) || (value == null))
7: throw new IllegalArgumentException("Cannot add null to this dictionary.");
8: else
9: {
10: V result = null;
11: int keyIndex = locateIndex(key);
12: if (keyIndex < numberOfEntries)
13: {
14: // Key found, return and replace entry's value
15: result = dictionary[keyIndex].getValue(); // Get old value
16: dictionary[keyIndex].setValue(value); // Replace value
17: }
18: else // Key not found; add new entry to dictionary
19: {
20: // Add at end of array
21: dictionary[numberOfEntries] = new Entry<>(key, value);
22: numberOfEntries++;
23: ensureCapacity(); // Ensure enough room for next add
24: } // end if
25: return result;
26: } // end if
27: } // end add
29: // Returns the array index of the entry that contains key, or
30: // returns numberOfEntries if no such entry exists.
31: // Precondition: key is not null.
32: private int locateIndex(K key)
33: {
34: // Sequential search
35: int index = 0;
36: while ( (index < numberOfEntries) &&
37: !key.equals(dictionary[index].getKey()) )
38: index++;
39: return index;
40: } // end locateIndex