Heim >Java >javaLernprogramm >Wie bestimmt die Methode „contains()' von ArrayList die Objektgleichheit?
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!