zeds
zeds

Reputation: 137

What is Object k?

public V put(K key, V value) {
    if (table == EMPTY_TABLE) {
        inflateTable(threshold);
    }
    if (key == null)
        return putForNullKey(value);
    int hash = hash(key);
    int i = indexFor(hash, table.length);
    for (Entry<K,V> e = table[i]; e != null; e = e.next) {
        Object k;
        if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
            V oldValue = e.value;
            e.value = value;
            e.recordAccess(this);
            return oldValue;
        }
    }

    modCount++;
    addEntry(hash, key, value, i);
    return null;
}

I am trying to understand the HashMap implemintation. I understood everything except this line - Object k;
Please, explain how this Object k appears??

Upvotes: 0

Views: 497

Answers (1)

Sotirios Delimanolis
Sotirios Delimanolis

Reputation: 280102

In that implementation of a HashMap, the data structure was backed by an array of linked lists of entries. These entries have a key and a value.

That variable k is used to store the key for each entry while iterating over the linked list bucket. If it's found to be equal (reference and then value equality) to the key with which you're trying to insert a value, then that value replaces the old.

Upvotes: 1

Related Questions