Junior — Middle
¿Qué sucederá si se insertan en un HashMap dos claves con el mismo código hash pero valores diferentes según equals?
sobes.tech AI
Respuesta de la IA
En HashMap en Java, las claves se almacenan en buckets indexados por el hash-código. Si dos claves tienen el mismo hash-código, caen en un mismo bucket, pero para determinar la unicidad se usa el método equals.
Si se insertan dos claves con el mismo hash-código, pero que no son iguales según equals, HashMap almacenará ambas claves como entradas diferentes en el mismo bucket.
Ejemplo:
Map<Key, String> map = new HashMap<>();
Key key1 = new Key(1); // hashCode = 42
Key key2 = new Key(2); // hashCode = 42, pero !key1.equals(key2)
map.put(key1, "value1");
map.put(key2, "value2");
System.out.println(map.size()); // 2
Por lo tanto, un mismo hash-código no significa claves iguales. HashMap primero busca en el bucket por el hash, y luego compara las claves usando equals. Si equals devuelve false, la clave se considera nueva y se añade a la colección.