Heim >Java >javaLernprogramm >Wie überschreibe ich die Methode equal() in Java für einen genauen Objektvergleich?

Wie überschreibe ich die Methode equal() in Java für einen genauen Objektvergleich?

Linda Hamilton
Linda HamiltonOriginal
2024-12-26 21:15:14472Durchsuche

How to Override the equals() Method in Java for Accurate Object Comparison?

Überschreiben der Methode equal() in Java für den Objektvergleich

In Java können Sie mit der Methode equal() bestimmen, ob zwei Objekte vorhanden sind sind gleich. Standardmäßig vergleicht equal() Objektreferenzen, was nicht immer das gewünschte Verhalten ist. Durch Überschreiben der Methode „equals()“ können Sie Ihre eigene Vergleichslogik definieren.

Szenario:

Sie möchten die Methode „equals()“ in einer People-Klasse überschreiben zwei Datenfelder: Name und Alter. Ihr Ziel ist es, Personenobjekte anhand ihrer Namen und ihres Alters zu vergleichen.

Benutzerdefinierte equal()-Methode:

Um die equal()-Methode zu überschreiben, definieren Sie sie im Personenklasse:

public boolean equals(People other) {
    // Null check and class check
    if (other == null || getClass() != other.getClass()) {
        return false;
    }

    // Downcast to People
    People otherPeople = (People) other;

    // Compare fields using == for primitive types (age) and equals() for objects (name)
    return name.equals(otherPeople.name) && age == otherPeople.age;
}

Korrektur des Vergleichs primitiver Typen:

Der Originalcode Ich habe versucht, mit equal() das Altersfeld zu vergleichen, bei dem es sich um einen primitiven Typ handelt. Primitive Typen haben ihre eigenen Gleichheitsvergleichsoperatoren (in diesem Fall ==). Durch Ändern von age.equals(other.age) in age == other.age wird dieses Problem behoben.

Verwendungsbeispiel:

Innerhalb der Main-Klasse eine ArrayList of Person Objekte entstehen. Die Methode equal() wird verwendet, um Personen zu vergleichen und die Ergebnisse auszudrucken:

ArrayList<Person> people = new ArrayList<>();
people.add(new Person("Subash Adhikari", 28));
// ...

// Compare people objects
for (int i = 0; i < people.size() - 1; i++) {
    for (int y = i + 1; y <= people.size() - 1; y++) {
        boolean check = people.get(i).equals(people.get(y));

        // Print comparison result
        System.out.println("-- " + people.get(i).getName() + " - VS - " + people.get(y).getName());
        System.out.println(check);
    }
}

Ausgabe:

Das Programm gibt aus, ob die verglichenen Personen gleich sind oder nicht . Zum Beispiel:

-- Subash Adhikari - VS - K false
-- Subash Adhikari - VS - StackOverflow false
-- Subash Adhikari - VS - Subash Adhikari true

Das obige ist der detaillierte Inhalt vonWie überschreibe ich die Methode equal() in Java für einen genauen Objektvergleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn