Est-ce une mauvaise pratique d'utiliser des objets mutables comme clés Hashmap ? Que se passe-t-il lorsque vous essayez de récupérer une valeur d'un Hashmap à l'aide d'une clé suffisamment modifiée pour changer son hashcode ?
Par exemple, étant donné
class Key
{
int a; //mutable field
int b; //mutable field
public int hashcode()
return foo(a, b);
// setters setA and setB omitted for brevity
}
avec code
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);
Que se passe-t-il si nous appelons maintenant map.get(key1)
? Est-ce sûr ou conseillé ? Ou est-ce que le comportement dépend de la langue ?