Java 如何更改数组的长度?
因此,我被分配了一个项目,其中我有一个数组,当用户将元素放入这个数组时,一旦数组满了,它的长度就必须加倍。我们不允许在集合界面中使用数组列表或任何内容。我试图做的是在旧数组满后创建一个新数组,然后将值复制到新数组中。问题是我不知道我需要制作多少次新数组,所以我想知道如何着手解决这个问题。数组是固定长度的。如果您想要具有可变长度的数据结构,请使用ArrayList,因为海报明确说明了家庭作业的要求,排除了集合的使用,另一种方法是使用System.arraycopy()。在这种方法中,您只维护一个数组,在向其中添加项时,您可以使用System.arraycopy()将旧数组复制到新的更大数组中。System.arraycopy()相对较快,实际上是ArrayList扩展其大小的方式 如果您担心使用System.arraycopy()的成本,则只能在阵列已满时使用它,并创建一个具有更多空间的新阵列。例如。 创建一个大小为20的数组。当它完全复制到大小为40的数组中时。当它完全复制到一个大小为60的数组中时 有趣的是,ArrayList将其大小增加了Java 如何更改数组的长度?,java,arrays,dynamic-arrays,Java,Arrays,Dynamic Arrays,因此,我被分配了一个项目,其中我有一个数组,当用户将元素放入这个数组时,一旦数组满了,它的长度就必须加倍。我们不允许在集合界面中使用数组列表或任何内容。我试图做的是在旧数组满后创建一个新数组,然后将值复制到新数组中。问题是我不知道我需要制作多少次新数组,所以我想知道如何着手解决这个问题。数组是固定长度的。如果您想要具有可变长度的数据结构,请使用ArrayList,因为海报明确说明了家庭作业的要求,排除了集合的使用,另一种方法是使用System.arraycopy()。在这种方法中,您只维护一个数
int newCapacity = (oldCapacity * 3)/2 + 1;
当旧数组已满时。这篇文章的作者大概在需要时对数组的增长量做了相当多的思考。也许也值得这样做。关于开发环境的任何提示?您遗漏了一个小细节:您使用的是什么语言?还是您可以自由选择?:)这取决于编程语言。C++有……请编辑您的问题以改进它(并提供一些源代码)。对不起,我忘记了那个主要细节。我正在使用javaI,我不允许使用数组列表。请参阅下面我的另一个答案。