Sobes.tech
Junior

Τι κάνει η μέθοδος equals();

sobes.tech AI

Απάντηση από AI

Η μέθοδος equals() στη Java συγκρίνει δύο αντικείμενα για να ελέγξει αν είναι ίσα.

Κατά προεπιλογή (στην κλάση Object), ελέγχει αν οι αναφορές στα αντικείμενα είναι ίδιες (αν αναφέρονται στο ίδιο αντίγραφο στη μνήμη).

Οι κλάσεις μπορούν να επαναπροσδιορίσουν αυτή τη μέθοδο για να καθορίσουν τη λογική ισότητα των αντικειμένων βάσει του περιεχομένου τους (π.χ., δύο αντικείμενα String θεωρούνται ίσα αν περιέχουν την ίδια ακολουθία χαρακτήρων, ακόμα και αν είναι διαφορετικά αντίγραφα).

Όταν επαναπροσδιορίζετε το equals(), είναι επίσης απαραίτητο να επαναπροσδιορίσετε τη μέθοδο hashCode() ώστε να τηρείται η ακόλουθη συμφωνία: αν δύο αντικείμενα είναι ίσα σύμφωνα με το equals(), τότε οι μέθοδοι hashCode() τους πρέπει να επιστρέφουν τις ίδιες τιμές.

Παράδειγμα επαναπροσδιορισμού:

class MyClass {
    private int value;

    public MyClass(int value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Σύγκριση αναφορών
        if (o == null || getClass() != o.getClass()) return false; // Έλεγχος null και τύπων
        MyClass myClass = (MyClass) o; // Μετατροπή τύπου
        return value == myClass.value; // Λογική σύγκριση
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Δημιουργία hash
    }
}