Ü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!