Junior — Middle
Cosa succede se si inseriscono due chiavi con lo stesso hash code ma valori diversi secondo equals in una HashMap?
sobes.tech AI
Risposta dell'AI
In una HashMap in Java, le chiavi sono memorizzate in bucket indicizzati dal codice hash. Se due chiavi hanno lo stesso codice hash, finiscono nello stesso bucket, ma per determinare l'unicità si utilizza il metodo equals.
Se si inseriscono due chiavi con lo stesso codice hash, ma che non sono uguali secondo equals, la HashMap conserverà entrambe le chiavi come record diversi nello stesso bucket.
Esempio:
Map<Key, String> map = new HashMap<>();
Key key1 = new Key(1); // hashCode = 42
Key key2 = new Key(2); // hashCode = 42, ma !key1.equals(key2)
map.put(key1, "value1");
map.put(key2, "value2");
System.out.println(map.size()); // 2
Quindi, lo stesso hash code non indica chiavi uguali. La HashMap prima cerca nel bucket tramite l'hash, poi confronta le chiavi tramite equals. Se equals restituisce false, la chiave viene considerata nuova e aggiunta alla collezione.