zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Wir brauchen die equals(Object) Methode, so dass die ArrayList Methode indexOf() für die Suche verwendet werden kann.


Auf Gleichheit testen

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.


Frage 24:

Würde die folgende equals() Methode genau so funktionieren?

class Entry
{
  . . . . .

  public boolean equals( Object other )
  {
    return name.equals( other.getName() );
  }

  . . . . .
}

zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite