Sobes.tech
Junior — Middle

Որ դեպքերում պետք է վերագրեք equals մեթոդը Java-ում՝ ճիշտ համեմատելու համար օբյեկտները։

sobes.tech AI

Պատասխան AI-ից

Java- ում equals մեթոդը պետք է վերագրի, երբ ցանկանում եք սահմանել ձեր սեփական չափանիշները ձեր դասի օբյեկտների հավասարության համար, որոնք տարբերվում են ստանդարտ հղումային համեմատությունից (որը իրականացվում է Object-ում):

Սա հատկապես կարևոր է, եթե ձեր դասի օբյեկտները տրամաբանական առումով համարվում են հավասար, երբ որոշ դաշտեր համընկնում են, օրինակ, Person դասում, օբյեկտները համարվում են հավասար, եթե անունը և ծննդյան ամսաթիվը համընկնում են:

equals մեթոդի վերագրումը անհրաժեշտ է, որպեսզի՝

  • Դյուրին համեմատել օբյեկտները բովանդակության հիման վրա:
  • Հաստատել HashSet կամ HashMap հավաքածուների ճիշտ աշխատանքը, որոնք օգտագործում են equals՝ տարրերի յուրահատուկությունը որոշելու համար:

equals մեթոդը վերագրելու ժամանակ, կարևոր է նաև վերագրել hashCode, որպեսզի պահպանվի այս մեթոդների միջև պայմանագիրը:

equals և hashCode մեթոդների օրինակ:

@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(name, person.name) && Objects.equals(birthDate, person.birthDate);
}

@Override
public int hashCode() {
    return Objects.hash(name, birthDate);
}