Sobes.tech
Junior — Middle

Ako sa určuje zhoda kľúčov v týchto štruktúrach alebo algoritmoch?

sobes.tech AI

Odpoveď od AI

V Jave je ujemanje kľúčov v dátových štruktúrach ako HashMap alebo HashSet určené metódami hashCode() a equals() objektu kľúča.

  1. Najskôr sa volá hashCode() na výpočet hash kódu kľúča, čo určuje vedro (kôš) v hash tabuľke.
  2. Ak je v tomto vedre viac prvkov (kolízia), pre každý z nich sa volá equals(), aby sa overila skutočná rovnosť kľúčov.

Pre správnu funkciu kľúčov je potrebné prepísať obe metódy: hashCode() a equals(), aby objekty s rovnakými logickými hodnotami mali rovnaký hash kód a boli považované za rovné.

Príklad:

class Person {
    private String id;

    @Override
    public int hashCode() {
        return id.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person other = (Person) obj;
        return id.equals(other.id);
    }
}