i need some help regarding adding values into an array
for examp开发者_开发知识库le
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
Thanks
SOLUTION
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);
a=tmp;
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
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);
appending isn't typically the kind of operation you'd do with arrays. I suggest you use ArrayList
object, see API, which you can always convert back to an array.
You have created an array of fixed size equals to three, you can't append more. You need to copy to a new array, with new size. See Arrays class
long[] s = new long[] {0L, 1L, 2L};
long[] l = Arrays.copyOf(s, 6);
l[3] = 3L;
l[4] = 4L;
l[5] = 5L;
System.out.println(Arrays.toString(l));
The output is
[0, 1, 2, 3, 4, 5]
long[] s = new long[] {0, 1, 2};
long[] s2=new long[]{3, 4, 5};
int len_s= s.length;
s= Arrays.copyOf(s, len_s+s2.length); //extends range arrays
System.arraycopy(s2,0,s1,len_s,s2.length); // copy three elements from s2 to s begin at s[len_s]; s2.length is number of elements s2.
System.out.println(Arrays.toString(a1));
output is
[0,1,2,3,4,5]
You cannot append values to array dynamically as the memory space is allocated to array object at the time of initializing, it means pre defined consecutive memory location is allocated.Hence we need to use array list because it uses linked list data structure internally and allows you to add/remove/sort easily without wasting any memory space.
精彩评论