Wir brauchen die equals(Object)
Methode, so dass die ArrayList
Methode indexOf()
für die Suche verwendet werden kann.
Wir prüfen die equals(Object)
Methode:
class Entry { private String name; private String number; . . . . . // Compare the name of this Entry // with that of some other object @Override public boolean equals( Object other ) { // Get the name in the other object. // Compare the name in this object // with that in the other object. String otherName = ((Entry)other).getName(); return name.equals( otherName ); } . . . . . }
Alle Klassen verfügen über eine equals(Object)
Methode, da diese in der Object
-Klasse definiert ist und alle anderen Klassen von dieser Klasse abgeleitet sind.
An dieser Stelle kann es hilfreich sein, einen Blick in die Java-Dokumentation der Klasse Object
zu werfen: Object
Alle Klassen verfügen also durch Vererbung über die equals(Object)
Methode. Die meisten Klassen überschreiben diese jedoch mit einer Methode, die für ihren eigenen Zweck besser geeignet ist.
Die Methode erwartet einen Parameter vom Typ Object
. Das bedeutet, dass die Methode mit einer Referenz auf einen beliebigen Objekttyp arbeitet. Unsere Anwendung muss jedoch zwei Entry
-Objekte miteinander vergleichen. Ein Eintrag (Entry) enthält den gesuchten Namen, der andere ist ein Element der ArrayList
. Das Folgende
String otherName = ((Entry)other).getName();
verwendet eine Typumwandlung, um dem Compiler mitzuteilen, dass other
eine Referenz auf ein Entry
-Objekt ist. Das ist erforderlich, um auf die Methode getName()
des Entry
-Objekts zugreifen zu können.
Dann wird der Name des other
-Objekts mit dem Namen des Objekts verglichen, das die Methode equals()
aufruft:
return name.equals( otherName );
Wenn die beiden Namen gleich sind, gibt die Methode true
zurück.
Würde die folgende equals()
Methode genau so funktionieren?
class Entry { . . . . . public boolean equals( Object other ) { return name.equals( other.getName() ); } . . . . . }