Ներկայացրեք տարբերությունները Java-ի մեջ equals() և hashCode() մեթոդների միջև և թե ինչու են նրանք միասին անհրաժեշտ։
sobes.tech AI
Պատասխան AI-ից
Java-յի equals() և hashCode() մեթոդները կապված են օբյեկտների համեմատության և դրանց օգտագործման հետ հավաքածուներում:
-
equals()որոշում է, արդյոք երկու օբյեկտներ տրամաբանական իմաստով հավասար են: Դեպքային,Objectդասում, այն համեմատում է հղումները (այսինքն, արդյոք դրանք նույն օբյեկտներն են հիշողության մեջ), բայց սովորաբար վերագրում է պարունակության համեմատությանը: -
hashCode()վերադարձնում է ամբողջ թիվ — օբյեկտի հեշ-կոդը: Օրինակ, այն օգտագործվում է հեշ աղյուսակներում (HashMap,HashSet) արագ որոնման համար:
Կարևոր է, որ եթե երկու օբյեկտներ համարվում են հավասար equals()-ով, ապա նրանց hashCode()-ը պետք է լինի նույնը: Այս կանոնը ապահովում է հեշ-կազմակերպված հավաքածուների ճիշտ աշխատանքը:
Օրինակ՝
class Person {
String name;
int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person p = (Person) o;
return age == p.age && name.equals(p.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Այստեղ equals() համեմատում է դաշտերը, իսկ hashCode() վերադարձնում է նույն դաշտերի հիման վրա հեշ, ինչը ապահովում է կոնսիստենցիան։