Heim >Java >javaLernprogramm >Wie bestimmt die Methode „contains()' von ArrayList die Objektgleichheit?

Wie bestimmt die Methode „contains()' von ArrayList die Objektgleichheit?

Linda Hamilton
Linda HamiltonOriginal
2024-12-02 22:40:11686Durchsuche

How Does ArrayList's `contains()` Method Determine Object Equality?

Objektvergleich in ArrayList: Wie enthält() die Objektgleichheit bestimmt

Beim Hinzufügen eines Objekts zu einer ArrayList wird oft davon ausgegangen, dass es enthält ()-Methode bewertet Objekte ausschließlich anhand ihrer Feldwerte. Der eigentliche Prozess ist jedoch nuancierter.

In Java definiert die List-Schnittstelle, die ArrayList implementiert, die Signatur der Methode contains(). Laut Dokumentation gibt die Methode „genau dann true zurück, wenn diese Liste das angegebene Element enthält.“ Aber wie bestimmt die Liste, ob zwei Objekte gleich sind?

Die Rolle von equal()

Die Antwort liegt in der Methode equal(), die definiert ist in der Object-Klasse. Diese Methode ist dafür verantwortlich, zwei Objekte zu vergleichen und festzustellen, ob sie denselben Wert darstellen. Wenn die Methode „contains()“ aufgerufen wird, ruft sie intern die Methode „equals()“ auf, um zu ermitteln, ob das angegebene Objekt mit einem der Objekte in der Liste übereinstimmt.

Benutzerdefinierte equal() für benutzerdefinierte Objekte

In Ihrem konkreten Beispiel definieren Sie eine benutzerdefinierte equal()-Methode in der Thing-Klasse. Dies ist notwendig, da die von Object bereitgestellte Methode equal() standardmäßig Objektreferenzen und nicht die Feldwerte vergleicht. Ihre Implementierung vergleicht das Wertfeld korrekt, um festzustellen, ob die beiden Thing-Objekte gleich sind.

Angenommen, die Thing-Klasse ist wie gezeigt implementiert, gibt die Methode „contains()“ bei der Suche nach einem identischen Objekt tatsächlich „true“ zurück zu dem, der zuvor zur Warenkorbliste hinzugefügt wurde. Dies liegt daran, dass die Methode equal() true zurückgibt, wenn die Wertfelder der beiden Objekte übereinstimmen.

Fazit

Zusammenfassend lässt sich sagen, dass die Methode contains() der ArrayList die verwendet Die Methode equal() ermittelt, ob zwei Objekte gleich sind. Bei benutzerdefinierten Objektklassen müssen Sie möglicherweise die Methode equal() überschreiben, um Ihre eigene Implementierung basierend auf den spezifischen Eigenschaften bereitzustellen, die die Gleichheit für Ihre Objekte definieren.

Das obige ist der detaillierte Inhalt vonWie bestimmt die Methode „contains()' von ArrayList die Objektgleichheit?. 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