Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改数组的长度?_Java_Arrays_Dynamic Arrays - Fatal编程技术网

Java 如何更改数组的长度?

Java 如何更改数组的长度?,java,arrays,dynamic-arrays,Java,Arrays,Dynamic Arrays,因此,我被分配了一个项目,其中我有一个数组,当用户将元素放入这个数组时,一旦数组满了,它的长度就必须加倍。我们不允许在集合界面中使用数组列表或任何内容。我试图做的是在旧数组满后创建一个新数组,然后将值复制到新数组中。问题是我不知道我需要制作多少次新数组,所以我想知道如何着手解决这个问题。数组是固定长度的。如果您想要具有可变长度的数据结构,请使用ArrayList,因为海报明确说明了家庭作业的要求,排除了集合的使用,另一种方法是使用System.arraycopy()。在这种方法中,您只维护一个数

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

数组是固定长度的。如果您想要具有可变长度的数据结构,请使用ArrayList,因为海报明确说明了家庭作业的要求,排除了集合的使用,另一种方法是使用System.arraycopy()。在这种方法中,您只维护一个数组,在向其中添加项时,您可以使用System.arraycopy()将旧数组复制到新的更大数组中。System.arraycopy()相对较快,实际上是ArrayList扩展其大小的方式

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

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

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

当旧数组已满时。这篇文章的作者大概在需要时对数组的增长量做了相当多的思考。也许也值得这样做。

关于开发环境的任何提示?您遗漏了一个小细节:您使用的是什么语言?还是您可以自由选择?:)这取决于编程语言。C++有……请编辑您的问题以改进它(并提供一些源代码)。对不起,我忘记了那个主要细节。我正在使用javaI,我不允许使用数组列表。请参阅下面我的另一个答案。