Junior — Middle
Ինչպե՞ս է ապահովվում hashCode() և equals() մեթոդների համաձայնությունը Java-ում և ինչու է դա կարևոր?
sobes.tech AI
Պատասխան AI-ից
Java-да hashCode() և equals() մեթոդները պետք է համահունչ լինեն, որպեսզի օբյեկտները ճիշտ աշխատեն HashMap կամ HashSet նման հավաքածուներում: Կանոններ:
- Եթե երկու օբյեկտներ հավասար են ըստ equals(), ապա նրանց hashCode() պետք է վերադարձնի նույն արժեքը:
- Եթե երկու օբյեկտների hashCode() տարբեր են, ապա equals() անպայման կվերադարձնի false:
Սա կարևոր է, քանի որ hash աղյուսակները նախ օգտագործում են hashCode() արագ որոնման համար, հետո օգտագործում են equals() ճշգրիտ համեմատության համար: Այս պայմանը չպահպանելը կարող է հանգեցնել հավաքածուների սխալ աշխատանքի:
Օրինակ՝
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return id == person.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}