ben ben - 11 months ago 59
Java Question

append values dynamically into an long[] array

i need some help regarding adding values into an array

for example

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

when i do this i instantiate an array with the values

but how do i append to this to the above array if i have another value of

3, 4, 5

to make it like this

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

i tried the System.arraycopy function but i am only able to overide the array and when i try to append to it, i get a null pointer exception



i used this with a for loop to put in the values once by one

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);


You can not "append" elements to an array in Java. The length of the array is determined at the point of creation and can't change dynamically.

If you really need a long[] the solution is to create a larger array, copy over the elements, and point the reference to the new array, like this:

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 }

However, you probably want to use an ArrayList<Long> for this purpose. In that case you can append elements using the .add-method. If you choose this option, it should look something like

// Initialize with 0, 1, 2
ArrayList<Long> s = new ArrayList<Long>(Arrays.asList(0L, 1L, 2L));

// Append 3, 4, 5

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