Sobes.tech
Senior

Šta će se desiti sa HashMap ako hashCode uvek vraća konstantu?

sobes.tech АИ

Одговор од АИ

Ако metoda hashCode() uvek vraća istu konstantu, onda će svi objekti pasti u istu korpu (bucket) unutar HashMap. To će dovesti do pogoršanja performansi operacija umetanja, pretraživanja i brisanja sa amortizovanim O(1) na O(n), jer će svi elementi biti smešteni u jedan spisak ili stablo unutar te korpe.

Primer:

class BadHash {
    @Override
    public int hashCode() {
        return 42; // konstanta
    }

    @Override
    public boolean equals(Object obj) {
        return this == obj;
    }
}

Korišćenje takvih objekata u HashMap će dovesti do značajnog pogoršanja performansi zbog kolizija.