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.
- Najskôr sa volá
hashCode()na výpočet hash kódu kľúča, čo určuje vedro (kôš) v hash tabuľke. - 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);
}
}