2009-07-10 9 views
2

Wenn wir unsere eigenen Schlüssel in Hashtable implementieren, dann unsere eigene Hash-Tabelle Schlüssel müssen implementierenImplementierung für benutzerdefinierte Schlüssel in Hashtable

public int hashCode() 
{ 
} 

und

public Object equals(Object obj) 
    { 
    } 

Was die Implementierungen für diese Methoden wird?

+0

"public Object equals (Objekt obj)" muss "public boolean equals (Object obj)" lesen. –

Antwort

1

Nachdem Sie es durch Lesen von verstanden haben, können Sie commons lang EqualsBuilder und HashCodeBuilder verwenden, um es zu implementieren. Wenn das Teil nicht die Leistung entscheidend ist, auch können Sie die refelction Methode wie folgt verwenden:

public boolean equals(Object obj) { 
    return EqualsBuilder.reflectionEquals(this, obj); 
} 


public int hashCode() { 
    return HashCodeBuilder.reflectionHashCode(this); 
} 

Es nicht bekommt viel einfacher :)

+0

vielen Dank für die Erleuchtung mich – jezhilvalan

+0

Ich mag die Klassen EqualsBuilder und HashCodeBuilder, obwohl ich die Reflektionsmethoden wegen der Leistungsprobleme normalerweise vermeiden. – harmanjd

+0

@harmanjd: Ja, wenn es leistungskritisch ist, sollten Sie es vermeiden, aber die meiste Zeit ist es nicht. Wenn Sie beispielsweise Hibernate verwenden, ist die Reflektion sehr wichtig, um Unterschiede zwischen Objekten zu finden, bevor Sie die Datenbank aktualisieren. Wenn Sie danach eine 10 oder 100 Millisekunden Datenbankoperation durchführen, sind die 2 Nanosekunden für den Vergleich von Objekten mit Reflexion nur unbedeutend. –

0

Diese Methoden sind für hashtable Implementierung verwendet, um Elemente zu identifizieren, während Einfügen und Abrufen.

  1. hashcode ist der Schlüssel
  2. zum Speichern ist gleich Methoden enthält, etc erhalten die Schlüssel zu überprüfen.
Verwandte Themen