Junior — Middle
როგორ ხდება hashCode() და equals() მეთოდების თანხვედრა Java-ში და რატომ არის ეს მნიშვნელოვანი?
sobes.tech AI
პასუხი AI-სგან
Java-ში, hashCode() და equals() მეთოდები უნდა იყოს შესაბამისი, რათა ობიექტები სწორად მუშაობდნენ კოლექციებში, როგორიცაა HashMap ან HashSet. წესები:
- თუ ორი ობიექტი თანაბარია equals() მიხედვით, მათი hashCode() უნდა აბრუნებდეს ერთსა და იმავე მნიშვნელობას.
- თუ ორი ობიექტის hashCode() განსხვავებულია, მაშინ equals() აუცილებლად დააბრუნებს false-ს.
ეს მნიშვნელოვანია, რადგან ჰეშ-ცხრილები პირველ რიგში იყენებენ hashCode() სწრაფი ძიებისთვის, და შემდეგ გამოიყენებენ equals() ზუსტი შედარებისთვის. ამ კონტრაქტის დარღვევა შეიძლება გამოიწვიოს კოლექციების არასწორი მუშაობა.
მაგალითი:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return id == person.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}