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

时间:2015-10-02 09:52:46

标签: java arrays resize runtime

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

int arr[]=new int[n];

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

3 个答案:

答案 0 :(得分:8)

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

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

如果您被允许这样做,最好使用ArrayList

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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