繁体   English   中英

如何在不创建新的情况下减少阵列大小?

[英]How to reduce array size without creating new?

我正在使用数组存储一种对象。 我创建了一个固定大小的数组

int arr[]=new int[n];

现在处理完这个数组之后,我想从这个数组释放高达75%的内存(现在只有n / 4个元素是有用的)。 所以我的问题是,因为n非常大并且我希望不占用更大的内存而不是有用的, 如何在运行时减少数组的大小而不复制到大小为n / 4的新数组(甚至是否可能?)

这是不可能的。 初始化后,无法更改数组的长度。

您可以做的是创建另一个具有合适大小的数组,并使这个大型数组符合垃圾收集器的条件。

如果允许,最好使用ArrayList

这根本不可能。 尽管您正在使用集合进行创建,但如果数组大小超过,它们会将数组元素复制到更大的数组!

不,一旦你创建了一个数组,那么它的大小是固定的。 你不能在运行时更改它。 对于当前场景,您可以将有用的元素复制到新阵列。 或者只是保持阵列不关心内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM