Die Methode indexOf()
durchläuft die gesamte Liste. Hier ist ein Auszug aus Java 7 Quellcode:
Es wäre besser, Java durchgehen zu lassen, als es selbst zu schreiben. Stellen Sie nur sicher, dass Ihre Methode equals
ausreicht, um das gewünschte Objekt zu finden. Sie sollten auch hashCode()
überschreiben.
Ich werde deine equals
Methode nicht schreiben, aber ich würde dir zumindest empfehlen:
if(boolean_expr) { return true; }
; gib einfach den booleschen Ausdruck zurück. equals
-Methode überschreiben - die Signatur davon erfordert einen Object
-Parameter, nicht Date
. Die Signatur Ihrer equals
-Methode ist falsch. Sie überschreiben das equals
in Object
nicht, sondern überladen es nur.
Um das Verhalten der Methode equals
in Object
zu überschreiben, muss Ihre Signatur genau mit der in Object
übereinstimmen. Versuchen Sie Folgendes:
Außerdem empfiehlt es sich, die Methode hashCode
zu überschreiben, damit Ihr Objekt in kartenbasierten Sammlungen korrekt funktioniert.
Die Antwort von Makoto ist richtig. Das gleiche würde ich sagen. Aber Sie haben einige Fehler in Ihrem Code oben.
Auf Ihre Frage: Makotos Antwort ist eine Lösung. Meine Lösung besteht darin, die Hilfe von eclipse zu verwenden, um die Methoden hashcode und equals automatisch zu generieren. So:
%Vor%Per Konvention möchten Sie den Hashcode auch überschreiben, wenn Sie equals
überschreibenSie werden höchstwahrscheinlich feststellen, dass indexOf die Hashcode-Methode verwendet, um das Objekt nicht mit dem equals
abzugleichenWenn Sie eclise benutzen, um Ihren Code zu bearbeiten, wird eclipse aus dem "source" -Menü eine gute equals- und hashcode-Methode generieren.