Junior — Middle
Ποια είναι τα βασικάPrinciples της σχέσης μεταξύ των μεθόδων equals και hashCode στη Java;
sobes.tech AI
Απάντηση από AI
Βασικές αρχές της σχέσης μεταξύ equals και hashCode στη Java:
- Αν δύο αντικείμενα είναι ίσα σύμφωνα με το 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, διασφαλίζοντας τη συνέπειά τους.