数组比ArrayList更可序列化?

Red*_*ddy 3 java performance

有些时候我们的架构师给了我这个基础知识,我当时无法更多地与他交谈以获取细节,但我无法理解数组是如何更可序列化/更好的性能ArrayList.

更新:这是在Web服务代码中,如果它很重要,可能是他可能意味着性能而不是可序列化.

更新:ArrayLists的XML序列化没有问题.

  <sample-array-list>reddy1</sample-array-list>
  <sample-array-list>reddy2</sample-array-list>
  <sample-array-list>reddy3</sample-array-list>
Run Code Online (Sandbox Code Playgroud)

分布式应用程序可能存在问题吗?

Mic*_*rdt 19

没有"更可序列化"的东西.一个类是可序列化的,或者不是.数组和ArrayList 都是可序列化的.

至于表现,那是一个完全不同的话题.数组,尤其是基元的数组,使用的内存比ArrayLists少得多,但序列化格式实际上同样紧凑.

最后,唯一能够真正解释这种模糊和误导性陈述的人就是制造它的人.我建议你问你的建筑师究竟是什么意思.


Ste*_*n C 8

我假设你在谈论Java对象序列化.

事实证明,一个(对象)数组和ArrayList具有相似但不相同的内容.在数组的情况下,序列化将包括对象标题,数组长度及其元素.在ArrayList的情况下,序列化由列表大小,数组长度和数组的第一个"size"元素组成.因此,一个额外的32位int被序列化.各个对象标题中也可能存在差异.

所以,是的,串行表示的大小有一个小的(可能是4个字节)差异.并且可以稍微更快地序列化/反序列化数组.但差异可能在噪音中下降,并不值得担心...除非分析等告诉你这是一个瓶颈.

编辑

根据@汤姆Hawtin的评论,对象标题差异显著,特别是如果序列化只包含少量的ArrayList实例.