我需要一些有关将值添加到数组中的帮助

例如

long[] s = new long[] {0, 1, 2};

当我这样做时,我用值实例化一个数组

但是如果我有另一个值我该如何附加到上面的数组
3, 4, 5

使它像这样
s = new long[] {1, 2, 3, 4, 5, 6};

我尝试了System.arraycopy函数,但是我只能覆盖该数组,当我尝试追加到该数组时,我得到了一个空指针异常

谢谢

解决方案

我将它与for循环一起使用,一次将值放入一次
        long[] tmp = new long[a.length + x.length];
    System.arraycopy(a, 0, tmp, 0, a.length);
    System.arraycopy(x, 0, tmp, a.length, x.length);
    a=tmp;

最佳答案

您不能将元素“追加”到Java中的数组。数组的长度是在创建时确定的,不能动态更改。

如果您确实需要long[],则解决方案是创建一个更大的数组,复制元素,然后将引用指向新数组,如下所示:

long[] s = new long[] {0, 1, 2};
long[] toAppend = { 3, 4, 5 };

long[] tmp = new long[s.length + toAppend.length];
System.arraycopy(s, 0, tmp, 0, s.length);
System.arraycopy(toAppend, 0, tmp, s.length, toAppend.length);

s = tmp;  // s == { 0, 1, 2, 3, 4, 5 }

但是,对于,您可能想为此使用ArrayList<Long>在这种情况下,您可以使用.add -method附加元素。如果选择此选项,它应该看起来像
// Initialize with 0, 1, 2
ArrayList<Long> s = new ArrayList<Long>(Arrays.asList(0L, 1L, 2L));

// Append 3, 4, 5
s.add(3L);
s.add(4L);
s.add(5L);


long[] longArray = new long[s.size()];
for (int i = 0; i < s.size(); i++)
    longArray[i] = s.get(i);

10-07 19:25
查看更多