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