Является ли плохой практикой использование изменяемых объектов в качестве ключей Hashmap? Что произойдет, если вы попытаетесь получить значение из Hashmap, используя ключ, который был достаточно изменен, чтобы изменить его хэш-код?
Например, дан
class Key
{
int a; //mutable field
int b; //mutable field
public int hashcode()
return foo(a, b);
// setters setA and setB omitted for brevity
}
с кодом
HashMap<Key, Value> map = new HashMap<Key, Value>();
Key key1 = new Key(0, 0);
map.put(key1, value1); // value1 is an instance of Value
key1.setA(5);
key1.setB(10);
Что произойдет, если мы теперь вызовем map.get(key1)
? Безопасно ли это или целесообразно? Или поведение зависит от языка?