概念:
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数组,从而节省空间和时间的消耗。
ArrayList的序列化
最新推荐文章于 2026-06-14 15:33:29 发布
本文详细介绍了ArrayList如何通过序列化机制高效地保存集合中的元素,特别是如何利用transient关键字优化序列化过程,避免不必要的内存开销。

1642

被折叠的 条评论
为什么被折叠?



