使用可变对象作为 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)
会发生什么?这样做是安全的还是明智的?还是行为取决于语言?