2017-10-16 3 views
0

Warum verwenden OOP-Sprachen den Speicherort eines Objekts als Standard-Hash-Code für Instanzen einer Klasse? Wenn die Hash-Tabelle kleiner als der adressierbare Speicher ist.Warum verwenden viele OO-Sprachen den Speicherort des Objekts selbst als Standard-Hash-Code?

+0

Hashtabellen ordnen Hashcodes normalerweise nicht direkt Tabellenindizes zu. Die Adresse ist normalerweise unveränderlich und einzigartig und kostet nichts zu berechnen, was sie zu einer handlichen Integer-ID macht. – pvg

Antwort

1

Weil es sehr bequem ist!

Die Speicheradresse ist eine eindeutige Kennung eines Objekts, da kein anderes Objekt denselben Speicherplatz belegen kann. Hash-Tabelle muss nicht groß sein, um sie zu verwenden. Angenommen, Ihre Hash-Tabelle ist zunächst klein und enthält nur 10 Buckets. Um zu entscheiden, welchen Eimer Sie in Ihr Objekt legen sollen, nehmen Sie seine Adresse und % 10. Und Sie haben eine "gute" Verteilung über Buckets. Hash-Tabellen sind wirklich interessant, und ich würde empfehlen, mehr über sie zu lesen, z. auf Wikipedia.

Verwandte Themen