Java数组改变了大小

我需要更改数组的大小,但我不能简单地创建另一个 – 它需要相同的名称,所以我可以将它传递给一个方法。 具体来说,我需要数组的术语数量是以前的两倍。 这可能与一个arrays有关吗? 我可以将数据从数组A复制到数组B,然后使A引用与B相同的数据,其中A = B; ?

是的,您的数组变量可能引用相同类型但大小不同的数组。

要在内部更改它,ArrayList可能更容易使用。

我使用了Arrays.copyOf方法,如下所示:

  int myArray[] = {1,2,3}; myArray = Arrays.copyOf(myArray, myArray.length+1); //previous line creates a copy of the array and adds one to the size myArray[3] = 12; // assign the new fourth element the value of 12 //then loop through the array to output each element for(int ctr = 0; ctr 

这不是Java中的数组如何工作:

 int[] anArray; anArray = new int[10]; for (int i = 0; i < 10; ++i) { // ... } int[] secondArray = anArray; // Grow "anArray" via secondArray to 20 please: secondArray = new int[20]; // No way to alter anArray with this - now two arrays 

最接近的解决方法是在分配数组时使数组成为完整大小,但在准备好之前不要使用整个数组。 即你想要预先分配你需要的所有空间。

 int[] anArray; anArray = new int[20]; for (int i = 0; i < 10; ++i) { // Still < 10 here // ... } int[] secondArray = anArray; // no need to change the array, it's already big enough 

要么是这个,要么使用提供的众多容器中的一个。

您需要创建一个新数组,因为它们的大小是静态的。 然后使用srcArray = Arrays.copy(srcArray, srcArray.length * 2);

或者,您可能想要考虑使用列表而不是数组。 ArrayList在内部由数组支持,该数组在需要时将其大小加倍。

 int[] a = new int[5]; // fill a int[] b = Arrays.copyOf(a, 10); 

与Array相比,使用ArrayList更好