Warum ist die hash-Tabelle von HashMap markiert als vorübergehende obwohl die Klasse serialisierbar ist
Ich war auf der Suche an der Quelle der HashMap.
Einen HashMap
implements Serializable
.
Ok ist, so dass es sein kann, peristed/übertragen als ein Objekt.
Aber ich sehe, dass die hashtable selbst ist gekennzeichnet transient
.
Ich diese nicht erhalten.Wenn Sie markieren Sie Sie als vorübergehende, bedeutet das nicht, dass es sollte nicht serialisiert werden?
Aber alle Daten in der Tabelle.Also, warum ist es transient
?
Vielleicht bin ich verwirrt, wie Serializable
funktioniert?
InformationsquelleAutor Cratylus | 2012-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
HashMap
verwendetwriteObject
undreadObject
zum implementieren von benutzerdefinierter Serialisierung, anstatt nur lassen seinem Feld serialisiert werden normalerweise. Es schreibt die Anzahl der buckets, die Gesamtgröße und die einzelnen Einträge in den stream und baut sich aus diesen Gebieten, wenn deserialisiert werden. Als tzaman sagt, die Tabelle selbst ist unnötig in die serielle form, so dass es nicht serialisiert, um Platz zu sparen.Lesen Sie mehr über diese Methoden und einige andere Methoden ausführen einer benutzerdefinierten Serialisierung (
writeReplace
undreadResolve
) in der Serializable javadoc.Der hash-code der Objekte kann sich ändern, zwischen den Läufen des Programms-zum Beispiel, wenn hashCode() verwendet die Standard-Objekt-Implementierung-so die hash-Tabelle muss neu erstellt werden, während der Deserialisierung.
InformationsquelleAutor ColinD
Den
transient
Schlüsselwort gibt an, dass ein Feld sollte nicht in die serialisierte Darstellung einer Klasse. DieEntry[]
Tisch derHashMap
ist einfach eine Beschleunigung Struktur - die es ermöglicht ein schnelles nachschlagen der gespeicherten Einträge.Die gesamte Tabelle selbst nicht serialisiert werden müssen, die nur die Einträge enthält, da die Tabelle neu erstellt werden, wenn wieder Deserialisieren aus der Liste der Einträge.
Größe. Die
Entry
Tabelle ist größer als die Liste der Schlüssel.InformationsquelleAutor tzaman