Java Basic: equals und hashCode

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.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.