Erstellt man eine eigene neue Klasse (was beim Programmieren ja nicht so unüblich ist) so sollte man die geerbten Methoden equals und hashCode überschreiben. Dieses hat den Vorteil das man dabei die ggf. vorhandenen Membervariablen miteinbeziehen kann.
Hier ein Beispiel wie dieses aussehen kann:
/** * Klasse Person. */ public final class Person { private String name; private String vorname; /** * Konstruktor */ public Person() { } @Override public boolean equals(Object o) { if (o == null) return false; if (!(o instanceof Person)) { return false; } else { Person p = (Person) o; return p.toString().equalsIgnoreCase(this.toString()); } } @Override public int hashCode() { return this.toString().hashCode(); } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", vorname='" + vorname + '\'' + '}'; } }
equals
In der Methode equals prüfe ich, ob der übergebene Wert “NULL” ist, oder ob dieser sich von der Klasse Person ableitet, wenn beides NICHT zutrifft, so gebe ich ein “return false” zurück.
Wenn sich jedoch das übergebene Objekt von der Klasse Person ableitet, so gebe ich das resultat des ausdrucks “return p.toString().equalsIgnoreCase(this.toString());” zurück.
hashCode
Die Methode hashCode gibt einen primitiven Integer Wert zurück, diesen kann man bequem selber berechnen oder man verwendet wie schon in der Methode equals die Methode toString(), diese Methode liefert einen String Wert welcher wieder eine hashCode Methode liefert die können wir bequem zurückliefern.
toString
Unsere Methode toString, gibt die Werte der Membervariablen der Klasse Person als String zurück.