Re: list of arrays
Jeremy Watts wrote:
I have created a List with the intention of putting elements of
one-dimensional arrays within it. The arrays contain integers. The lines
I've used are:-
(for the purposes of this, I have set variableNumber equal to 5)
List<int[]>combinationList = new ArrayList<int[]>();
int[] degrees = new int[variableNumber + 1];
{ some routine which fills each element of 'degrees' with a random integer}
then, I wish to add the newly filled 'degrees' to the end of the list, using
:-
combinationList.add(degrees);
theres no problem just doing this the once, but if I attempt to add another
instance of 'degrees' to the list using the same above statement, then it
seems to overwrite the initial instance of degrees with the new one.
Why is it doing this? I cant seem to find a way around it. If I run
through say 10 iterations of the above then I am simply left with a list of
10 arrays all of which are identical to the last generated instance of
'degrees'.
Thanks
If you gave us an sscce <http://www.physci.org/codes/sscce/> , we'd be
better able to help you. However, I can guess at what you are doing
wrong...
public class MyArrays {
public static void main(String..args) {
/* create the list object */
List<int[]> list = new ArrayList<int[]>();
/* create the array object */
int[] degrees = new int[5];
/* add the array object to the list */
list.add(degrees);
/* adds the SAME array object to the list */
list.add(degrees);
/* create a different array object */
int[] moreDegrees = new int[5];
/* add the new array object to the list */
list.add(moreDegrees);
}
}
I'm guessing that your problem is that you are only ever creating a
single int[] array object, and you are adding that same object to the
list multiple times. list.add(foo) in reality only adds a reference to
foo -- not a copy of foo -- to the list. So, if you call list.get(0),
and list.get(1), you will get the SAME object.
Hope this helps.
Daniel.