Junior — Middle
In what situations can an object be lost from a HashMap?
sobes.tech AI
Answer from AI
An object can be lost from a HashMap in Java in the following situations:
- If the object's key overrides the
hashCode()andequals()methods incorrectly, for example, changing the state that affects the hash code after placing it in theHashMap. Then the object may become inaccessible for lookup. - If a weak reference is used (for example,
WeakHashMap), and the key or value no longer has strong references, the garbage collector may delete them. - If the object is explicitly removed via the
remove()methods.
Example of a problem with a mutable key:
Map<List<String>, String> map = new HashMap<>();
List<String> key = new ArrayList<>();
key.add("one");
map.put(key, "value");
key.add("two"); // changed the key after adding
// Now, map.get(key) may return null because the hashCode has changed
Therefore, keys in a HashMap should be immutable or not change the state that affects hashCode and equals.