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);
}