如何在java中调整数组大小?

时间:2017-04-19 14:51:32

标签: java arrays resize

作为标题,如何在不导入任何库的情况下调整java中的数组,包括ArrayListArrays.copyOf等等。

另外,我必须在我的程序中一次又一次地使用未知的输入数据调整大小。(即我有一个小数组,但是当数据增加时,我该如何调整它?

5 个答案:

答案 0 :(得分:2)

Java没有为分配的存储提供“调整大小”选项。您必须分配所需大小的新存储,并将旧存储中的数据复制到新存储。

您可以使用System.arraycopy()复制数据。 ArrayListVector类会自动执行这些重新分配和复制操作,因此如果您不使用它们,则需要重新发明轮子。

java.lang.System当然会自动导入到每个java程序中,因此,根据需要,您不需要import java.lang.System;来实现它。

答案 1 :(得分:1)

不幸的是,you cant resize an array in java

你可以做的一些事情是:

  1. 当获取新数据时,创建一个新数组并复制旧数组+新数据。

  2. 使用ArrayList,在向其添加数据时使数组更大。

  3. 使用java.util.Arrays.copyOf(...)。这会返回一个更大的数组,其中包含前一个数组的内容。

答案 2 :(得分:0)

根据定义,数组的大小是固定的,我知道很多现代语言可以让你分配长度并动态改变长度

但我认为你要找的是Vector

https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html

它允许O(1)访问(就像数组一样),同时具有动态的长度

答案 3 :(得分:0)

声明后,无法增加数组的大小。所以你必须在java中使用Collection框架,可能是ArrayList或LinkedList。

这就是Array和ArrayList之间的区别。在ArrayList中,您可以动态添加元素,无需增加它的大小。

答案 4 :(得分:0)

您可以使用 forEach 将值复制到扩大的新数组中

IntStream.range( 0, oldArray.length ).forEach( i -> newArray[i] = oldArray[i] );