ArrayList的序列化

概念:java

1)序列化一個對象時,被transient關鍵字修飾的變量(的值)不會被序列化。

ArrayList的序列化機制:
1)ArrayList實現了java.io.Serializable接口。
2)ArrayList中存放集合元素的Object數組被關鍵字transient修飾。代碼:transient Object[] elementData;
3)ArrayList序列化集合元素的機制:
	ArrayList在序列化時會調用writeObject(ObjectOutputStream s)方法,將size和element寫入ObjectOutputStream中;
	ArrayList在反序列化時調用readObject(java.io.ObjectInputStream s)方法,從ObjectInputStream中獲取到size和element,再恢復到存儲集合元素的Object數組中。

4)與直接序列化Object數組相比,這樣的機制有什麼優勢呢?

	elementData是一個Object數組,它一般會預留一些容量,等容量不足時再進行擴容;有些空間(elementData[size] ~ elementData[elementData.length-1])實際上並無存儲元素(存的是null);
	ArrayList的序列化機制:只序列化實際存儲的集合元素,而不是去實例化整個Object數組,從而節省空間和時間的消耗。
相關文章
相關標籤/搜索