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-ზე, რაც უზრუნველყოფს მათ შესაბამისობას.