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