Java将元素附加到基元数组

Java将元素附加到基元数组,java,primitive-types,Java,Primitive Types,在Java中是否可以在基元数组的末尾追加元素? 例如:如果int[]a=新的int[10]是一个数组。我怎样才能继续在末尾添加元素 编辑: 出于性能原因,我不想使用ArrayList,而是希望使用基本数组。一旦创建,Java中数组的大小是固定的 如果您想拥有一个动态大小的存储器,您将需要使用ArrayList 另一种方法是创建一个新的(更大的)数组并复制旧数组的内容,但请记住,这在时间和内存方面都非常昂贵: // this is a terrible idea, don't do it publ

在Java中是否可以在基元数组的末尾追加元素? 例如:如果
int[]a=新的int[10]是一个数组。我怎样才能继续在末尾添加元素

编辑:

出于性能原因,我不想使用ArrayList,而是希望使用基本数组。

一旦创建,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
在幕后为您所做的事情(尽管效率更高),因此如果您要添加很多元素,您需要从大于10个元素的默认容量的
数组列表开始。

使
数组更具动态性的一种方法是创建一个新的较长数组,并用它替换旧数组

比如说

假设您有一个大小为10的
int[]
,其中包含数字0到9:

int[] array = new int[10];
for(int i = 0; i < array.length; i++)
    array[i] = i;
然后执行以下操作

array=appendArray(数组,10)

现在,打印阵列的内容将输出:
0112345678910


或者,您可以使用基本上做类似事情的
ArrayList

您不能。数组的长度是静态的。请使用家族中合适的东西。你说的“附加”是什么意思?让它们在内存空间中一个接一个地存储对象?只是能够用附加对象打印数组的成员?增加数组的大小并添加更多元素?你想添加不同
类型的元素吗?@Pshemo不仅是原语,而且OP也在引用它们…可能的副本你也可以使用向量,不是吗?啊,有人用了V…这个词。拿些石头来@MarkusMalkusch lol@azurefrog确定这就是为什么不使用链接的原因Vectors@gtgaxiola啊!我没有注意到你发布了一个链接。我以为你在问“为什么不呢?”:p
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;
}