Sobes.tech
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-ի վրա, ինչը ապահովում է նրանց համահունչությունը։