是否可以在Java中的原始数组末尾追加元素?
例如:如果int[] a = new int[10];
是一个数组。我怎样才能在最后添加元素?
修改
我不想出于性能原因使用ArrayList,并希望继续使用原始数组。
答案 0 :(得分:3)
使Array
更具动态性的一种方法是创建一个方法来创建一个新的更长的数组并用它替换旧的数组。
例如。
假设你有一个大小为10的int[]
并且它包含数字0到9:
int[] array = new int[10];
for(int i = 0; i < array.length; i++)
array[i] = i;
打印阵列的内容将输出:0 1 2 3 4 5 6 7 8 9
现在你可以有这样的方法:
private int[] appendArray(int[] array, int x){
int[] result = new int[array.length + 1];
for(int i = 0; i < array.length; i++)
result[i] = array[i];
result[result.length - 1] = x;
return result;
}
并执行以下操作
array = appendArray(array, 10);
现在打印数组的内容将输出:
0 1 2 3 4 5 6 7 8 9 10
或者你可以使用基本上做类似事情的ArrayList
。
答案 1 :(得分:2)
创建后,Java中数组的大小是固定的。
如果您想拥有动态大小的存储空间,则需要使用ArrayList
。
另一种方法是创建一个新的(更大的)数组并复制旧数组的内容,但请记住,这在时间和内存上都非常昂贵:
// this is a terrible idea, don't do it
public int[] append(int[] i, int newElement) {
int[] copy = new int[i.length+1];
System.arraycopy(i, 0, copy, 0, i.length);
copy[i.length]= newElement;
return copy;
}
这实际上是ArrayList
在幕后为你做的事情(虽然效率更高),所以如果你要添加很多元素,你会想要从更大的{{{}开始。 1}}比10个元素的默认容量。