Back to questions
СБЕР
Junior — Middle
57
Как поведет себя HashMap, если все объекты имеют одинаковый hashCode, равный константе?
Companies where asked
Answer from AI
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");
// Все элементы будут в одном бакете, что замедлит операции.