如何增加数组的长度

kul*_*lok 21 java arrays

我有一个快速的问题.我在java中有一个整数数组,需要它的长度在整个类中变化.具体来说,我需要在某些情况下增加1.我试过这样的.

        sbgHeadX = new int[ numberOfSBG ];
Run Code Online (Sandbox Code Playgroud)

我需要的时候会增加整数变量numberOfSBG,但我觉得这不行.还有其他方法吗?

Jak*_*rka 26

如果您不想或不能使用ArrayList,那么有一个实用方法:

Arrays.copyOf() 
Run Code Online (Sandbox Code Playgroud)

这将允许您指定新的大小,同时保留元素.


Hun*_*len 24

Java中的数组具有固定大小,在声明时指定.要增加数组的大小,必须创建一个具有更大大小的新数组,并将所有旧值复制到新数组中.

例如:

char[] copyFrom  = { 'a', 'b', 'c', 'd', 'e' };
char[] copyTo    = new char[7];

System.out.println(Arrays.toString(copyFrom));
System.arraycopy(copyFrom, 0, copyTo, 0, copyFrom.length);
System.out.println(Arrays.toString(copyTo));
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用像List这样的动态数据结构.

  • 恕我直言,使用`Arrays.copyOf()`,就像在Jakub的答案中一样,会给出更短,更易读的代码. (3认同)

tal*_*las 14

我建议您使用ArrayList,因为您不必再​​担心长度了.创建后,您无法修改数组大小:

数组是一个容器对象,它包含固定数量的单个类型的值.创建数组时,将建立数组的长度.创建后,其长度是固定的.

(来源)

  • OP询问如何更改数组的大小,他没有要求替换数组.-1 (2认同)
  • @ b1nary.atr0phy态度很好,对SO很开心. (2认同)