Hallo! Wenn Sie in Java programmieren, ist .equals() eine der grundlegendsten Methoden, die Sie verstehen müssen. Diese Methode ist von entscheidender Bedeutung, wenn Sie Objekte vergleichen möchten, um festzustellen, ob sie hinsichtlich ihrer internen Werte „gleich“ sind, und nicht nur, ob es sich um dasselbe Objekt im Speicher handelt. Hier erkläre ich, wie die Methode .equals() in Java funktioniert und wie Sie sie in Ihren eigenen Programmen verwenden können.
Verstehen von .equals()
In Java ist die Methode .equals() in der Klasse Object definiert und kann von jeder Klasse überschrieben werden. Die Standardimplementierung in der Klasse Object vergleicht Speicherreferenzen, d. h. sie prüft, ob zwei Referenzen auf dasselbe Objekt verweisen. Diese Implementierung ist jedoch normalerweise nicht für benutzerdefinierte Klassen nützlich, bei denen „Gleichheit“ bedeutet, dass die Eigenschaften zweier Objekte gleich sind.
So überschreiben Sie .equals()
Damit .equals() in Ihren benutzerdefinierten Klassen nützlich ist, müssen Sie es überschreiben, um die relevanten Eigenschaften von Objekten zu vergleichen. Hier ist ein einfaches Beispiel dafür, wie Sie dies in einer Person-Klasse tun könnten:
öffentliche Klasse Person {
privater String-Name;
privates Int-Alter;
öffentliche Person(String name, int age) {
this.name = Name;
this.age = Alter;
}
@Override
öffentlicher boolescher Wert gleicht(Objekt obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
}
In diesem Beispiel prüft .equals() zunächst, ob das angegebene Objekt dasselbe Objekt ist (Referenzvergleich). Ist dies nicht der Fall, prüfen Sie, ob das Objekt eine Instanz der Klasse Person ist. Anschließend werden die Attribute name und age verglichen, die in diesem Fall die Gleichheit zweier Personen bestimmen.
Wichtige Überlegungen
Konsistenz mit hashCode: Wenn Sie .equals() überschreiben, sollten Sie auch hashCode() überschreiben, um sicherzustellen, dass das Hashing-Verhalten von Objekte entspricht der Gleichheitslogik.
Null-sicher: Ihre Implementierung von .equals() sollte null-sicher sein, um das Auslösen einer NullPointerException-Ausnahme zu vermeiden.
Symmetrie: Die Implementierung von .equals() muss symmetrisch sein; Das heißt, für zwei Objekte x und y muss x.equals(y) dasselbe Ergebnis zurückgeben wie y.equals( x).
Schlussfolgerung
Das ordnungsgemäße Überschreiben von .equals() ist für die korrekte Funktion Ihrer Objekte in Sammlungen, die von Gleichheit abhängen, wie z. B. HashSet und HashMap. Es ist wichtig sicherzustellen, dass Ihre Implementierung von .equals() genau und effizient ist, um sicherzustellen, dass Ihre Programme wie erwartet funktionieren. Ich hoffe, diese Erklärung hilft Ihnen, .equals() effektiv in Ihren Java-Projekten zu verwenden!
Hallo! Wenn Sie in Java programmieren, ist
.equals()
eine der grundlegendsten Methoden, die Sie verstehen müssen. Diese Methode ist von entscheidender Bedeutung, wenn Sie Objekte vergleichen möchten, um festzustellen, ob sie hinsichtlich ihrer internen Werte „gleich“ sind, und nicht nur, ob es sich um dasselbe Objekt im Speicher handelt. Hier erkläre ich, wie die Methode.equals()
in Java funktioniert und wie Sie sie in Ihren eigenen Programmen verwenden können.Verstehen von .equals()
In Java ist die Methode
.equals()
in der KlasseObject
definiert und kann von jeder Klasse überschrieben werden. Die Standardimplementierung in der KlasseObject
vergleicht Speicherreferenzen, d. h. sie prüft, ob zwei Referenzen auf dasselbe Objekt verweisen. Diese Implementierung ist jedoch normalerweise nicht für benutzerdefinierte Klassen nützlich, bei denen „Gleichheit“ bedeutet, dass die Eigenschaften zweier Objekte gleich sind.So überschreiben Sie .equals()
Damit
.equals()
in Ihren benutzerdefinierten Klassen nützlich ist, müssen Sie es überschreiben, um die relevanten Eigenschaften von Objekten zu vergleichen. Hier ist ein einfaches Beispiel dafür, wie Sie dies in einerPerson
-Klasse tun könnten:In diesem Beispiel prüft
.equals()
zunächst, ob das angegebene Objekt dasselbe Objekt ist (Referenzvergleich). Ist dies nicht der Fall, prüfen Sie, ob das Objekt eine Instanz der KlassePerson
ist. Anschließend werden die Attributename
undage
verglichen, die in diesem Fall die Gleichheit zweier Personen bestimmen.Wichtige Überlegungen
.equals()
überschreiben, sollten Sie auchhashCode()
überschreiben, um sicherzustellen, dass das Hashing-Verhalten von Objekte entspricht der Gleichheitslogik..equals()
sollte null-sicher sein, um das Auslösen einerNullPointerException
-Ausnahme zu vermeiden..equals()
muss symmetrisch sein; Das heißt, für zwei Objektex
undy
mussx.equals(y)
dasselbe Ergebnis zurückgeben wiey.equals( x)
.Schlussfolgerung
Das ordnungsgemäße Überschreiben von
.equals()
ist für die korrekte Funktion Ihrer Objekte in Sammlungen, die von Gleichheit abhängen, wie z. B.HashSet
undHashMap. Es ist wichtig sicherzustellen, dass Ihre Implementierung von
.equals()
genau und effizient ist, um sicherzustellen, dass Ihre Programme wie erwartet funktionieren. Ich hoffe, diese Erklärung hilft Ihnen,.equals()
effektiv in Ihren Java-Projekten zu verwenden!