Wandelbar hashmap keys eine gefährliche Praxis?

Ist es schlechte Praxis zu verwenden veränderliche Objekte als Hashmap keys? Was passiert, wenn Sie versuchen zum abrufen eines Wertes aus einer Hashmap mit einem Schlüssel, der geändert wurde, genug zu ändern, seinen hashcode?

Beispielsweise gegeben

class Key
{
    int a; //mutable field
    int b; //mutable field

    public int hashcode()
        return foo(a, b);
    //setters setA and setB omitted for brevity
}

mit 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);

Was passiert, wenn wir jetzt rufen map.get(key1)? Ist dies sicher oder ratsam? Oder ist das Verhalten abhängig von der Sprache?

InformationsquelleAutor donnyton | 2011-10-20

Schreibe einen Kommentar