为什么数组比集合占用更多内存?是因为对于数组,在初始化数组时会分配内存吗?
当我们想要更好的性能时,建议使用数组。这是因为数组将元素存储在连续的内存块中吗?
答案 0 :(得分:2)
您的问题分为两部分。我将在下面解决它们。
<强>内存强>
数组并不总是占用比Collection
更多的内存。数组几乎按顺序存储了一堆对象。大多数Collection
存储其他信息。例如,LinkedList
存储指向列表中上一个和下一个元素的指针。这意味着LinkedList
比数组占用更多空间。但是,数组通常需要更多连续空间,然后Collection
,因为JVM将尝试将整个数组分配到连续内存中,而不需要为所有Collection
分配第
<强>性能强>
至于性能,一切都取决于您对数据的处理方式。例如,如果要访问数据中的一堆随机indeces,则数组将非常快。但是,如果要删除数据中的一堆随机indeces,则数组 比LinkedList
慢。这是因为从数组中删除元素时,右边的所有元素都需要移位。从LinkedList
删除元素时,我们需要做的就是更新两个指针。换句话说,有时数组会提供比Collection
更好的性能,有时它会带来更差的性能。这完全取决于您对数据的处理方式以及您正在使用的Collection
的类型。