Junior — Middle
84
Kako će se ponašati HashMap ako svi objekti imaju isti hashCode, koji je konstanta?
Компаније где су питане
Одговор од АИ
sobes.tech АИ
Если все объекты в 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");
// Все элементы будут в одном бакете, что замедлит операции.