如何更改数组的长度?

时间:2015-02-26 17:16:50

标签: java arrays dynamic-arrays

所以我被分配了一个项目,其中我有一个数组,并且当用户将元素放入此数组时,一旦它变满就必须加倍。我们不允许在集合界面中使用数组列表或任何内容。我试图做的是在旧数组完成后创建一个新数组,然后我将值复制到新数组。问题是我不知道有多少次我需要制作一个新阵列,所以我想知道如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

数组是固定长度的。如果您想要一个具有可变长度的数据结构,请使用ArrayList

答案 1 :(得分:2)

由于海报明确规定了家庭作业的要求,不包括使用馆藏,另一种方法是使用System.arraycopy()。在这种方法中,您只维护一个数组,并在向其中添加项目时使用System.arraycopy()将旧数组复制到一个新的更大的数组中。 System.arraycopy()相对较快,实际上是ArrayList扩展其大小的方式。

如果您担心使用System.arraycopy()的成本,只有在阵列已满并使用更多空间创建新阵列时才能使用它。例如。 创建大小为20的数组。当它完全复制到大小为40的数组时。当它被完全复制到一个大小为60的数组...

有趣的是,ArrayList的大小增加了

int newCapacity = (oldCapacity * 3)/2 + 1;

旧阵列已满。据推测,这方面的作者在需要时对数组的增长有多大的考虑。值得做同样的事情。

相关问题