如何更改数组的长度?

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

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

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

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

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

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

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