Hashtable-Werte, die im Eclipse-Debugger angezeigt werden

8

Ich debugge eine Hashtable in Eclipse und finde etwas Seltsames. Der Name meiner Hashtable-Variablen lautet "my_hashTable" und der Eclipse-Debugger zeigt drei Werte an, wenn ich darauf klicke: {first = 0, third = 2, second = 1}, was wie erwartet korrekt ist, und die Anzahl ist 3 , das ist auch richtig.

Wenn ich jedoch auf die Variable "table" in der Variablen my_hashTable klicke, wird angezeigt, dass nur zwei Werte ungleich Null vorhanden sind: [4] = 2 und [5] = 0. Die vollständigen Werte sind unten:

[Null, Null, Null, Null, Drittel = 2, Erstes = 0, Null]

Warum passiert das? Wo ist das "zweite = 1" Paar? Dies ist das erste Mal, dass ich in Eclipse auf diese seltsame Beobachtung stoße.

Irgendeine Idee von was ist los? Danke.

    
ling 15.09.2014, 22:37
quelle

1 Antwort

9

Die obige Situation tritt aufgrund von HashTable structure auf, in der das Tabellenarray die Schlüssel / Wert-Paare in Form von Map$Entry speichert. Wenn zwei Schlüssel mit dem Object hashcode() and the underlying Collection's hashing algorithm auf den gleichen Bucket hash Sie würden in den gleichen Bucket (zB Tabelle [j]) in Form einer einfach verknüpften Liste mit dem nächsten Verweis in jedem Map $ Entry-Objekt eingefügt werden. Dies ist in jedem Tabellenindex enthalten a Map$Entry Objekt mit einem Verweis auf next Map$Entry Objekt mit demselben Hashbucket (aber mit den Schlüsselwerten ungleich gemäß der Methode equals() des Schlüsselobjekts) Die Sache ist, dass die Schlüssel ungleich der Methode equals () des Schlüssels wären, aber ihr Bucket-Index wäre gleich using the hashcode() and hashing algorithm applied.

Erweitern Sie einfach einen Ihrer sichtbaren Tabellenindizes für den nächsten, und Sie würden das Schlüssel-Wert-Paar in Form von Map$Entry finden.

Jeder Map $ -Eintrag , der in einem Tabellen-Array gespeichert ist, hat die folgende Struktur: -

%Vor%

Auf diese Weise funktionieren Hash-basierte Auflistungen. Objekte, deren Hashing-Algorithmus denselben Index zurückgibt, werden im selben Bucket (Tabellenindex) wie eine einzelne verknüpfte Liste gespeichert.

    
Kumar Abhinav 15.09.2014, 22:57
quelle

Tags und Links