How does Java HashMap store entries internally
HashMap
maintains a table of entries, with references to the associated keys and values, organized according to their hash code. If you mutate a key, then the hash code will change, but the entry in HashMap
is still placed in the hash table according to the original hash code. That's why map.get(keyOriginal)
will return null.
map.keySet()
just iterates over the hash table, returning the key of each entry it has.