为什么Array与集合相比占用更多内存?

时间:2017-05-30 04:11:05

标签: java

为什么数组比集合占用更多内存?是因为对于数组,在初始化数组时会分配内存吗?

当我们想要更好的性能时,建议使用数组。这是因为数组将元素存储在连续的内存块中吗?

1 个答案:

答案 0 :(得分:2)

您的问题分为两部分。我将在下面解决它们。

<强>内存

数组并不总是占用比Collection更多的内存。数组几乎按顺序存储了一堆对象。大多数Collection存储其他信息。例如,LinkedList存储指向列表中上一个和下一个元素的指针。这意味着LinkedList比数组占用更多空间。但是,数组通常需要更多连续空间,然后Collection,因为JVM将尝试将整个数组分配到连续内存中,而不需要为所有Collection分配第

<强>性能

至于性能,一切都取决于您对数据的处理方式。例如,如果要访问数据中的一堆随机indeces,则数组将非常快。但是,如果要删除数据中的一堆随机indeces,则数组 LinkedList慢。这是因为从数组中删除元素时,右边的所有元素都需要移位。从LinkedList删除元素时,我们需要做的就是更新两个指针。换句话说,有时数组会提供比Collection更好的性能,有时它会带来更差的性能。这完全取决于您对数据的处理方式以及您正在使用的Collection的类型。