Sobes.tech
Junior — Middle

Was passiert, wenn man in eine HashMap zwei Schlüssel mit demselben Hash-Code, aber unterschiedlichen equals-Werten einfügt?

sobes.tech KI

Antwort von AI

In einer HashMap in Java werden die Schlüssel in Buckets gespeichert, die nach dem Hash-Code indexiert sind. Wenn zwei Schlüssel denselben Hash-Code haben, fallen sie in denselben Bucket, aber zur Bestimmung der Einzigartigkeit wird die Methode equals verwendet.

Wenn zwei Schlüssel mit demselben Hash-Code eingefügt werden, die aber nach equals ungleich sind, speichert HashMap beide Schlüssel als unterschiedliche Einträge im selben Bucket.

Beispiel:

Map<Key, String> map = new HashMap<>();
Key key1 = new Key(1); // hashCode = 42
Key key2 = new Key(2); // hashCode = 42, aber !key1.equals(key2)

map.put(key1, "value1");
map.put(key2, "value2");

System.out.println(map.size()); // 2

Das bedeutet, dass ein gleicher Hash-Code nicht gleichbedeutend mit gleichen Schlüsseln ist. HashMap sucht zuerst im Bucket anhand des Hash-Codes, und vergleicht dann die Schlüssel mit equals. Wenn equals false ergibt, gilt der Schlüssel als neu und wird der Sammlung hinzugefügt.