Junior — Middle
82
¿Cómo se comportará HashMap si todos los objetos tienen el mismo hashCode, que es una constante?
Empresas donde se preguntó
Respuesta de la IA
sobes.tech AI
Если все объекты в HashMap имеют одинаковый hashCode (например, константу), то все они будут попадать в одну и ту же корзину (бакет) внутренней структуры. В результате HashMap деградирует по производительности до связного списка (или дерева, если количество элементов в бакете превысит порог), и операции вставки, поиска и удаления будут иметь сложность O(n) вместо ожидаемой O(1).
Пример:
class BadHash {
int value;
BadHash(int value) { this.value = value; }
@Override
public int hashCode() { return 42; } // константный хэш
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof BadHash)) return false;
return this.value == ((BadHash) o).value;
}
}
Map<BadHash, String> map = new HashMap<>();
map.put(new BadHash(1), "one");
map.put(new BadHash(2), "two");
// Все элементы будут в одном бакете, что замедлит операции.