java - ArrayList of ArrayLists in Recursion -
i've been working on larger project, , ran problem have replicated here in simpler fashion. i'm trying add arraylist of integers arraylist. problem every arraylist add larger arraylist gets updated if same.
public class recursiontest { static arraylist<integer> test = new arraylist<integer>(); static arraylist<arraylist<integer>> test1 = new arraylist<arraylist<integer>>(); public static void testrecurse(int n) { test.add(n); if (n % 2 == 0) { test1.add(test); } if (n == 0) { (arraylist<integer> : test1) { (integer : a) { system.out.print(i + " "); } system.out.println(); } return; } testrecurse(n - 1); } public static void main(string[] args) { testrecurse(10); } }
the output is:
10 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1 0
when should be:
10 10 9 8 10 9 8 7 6 10 9 8 7 6 5 4 10 9 8 7 6 5 4 3 2 10 9 8 7 6 5 4 3 2 1 0
can explain me happening here? , perhaps suggest work around such situation.
you adding exact same object test
arraylist
on , on again. why getting modified together.
everytime want add it, need create new arraylist<integer>()
before add it.
you can try replacing
test1.add(test);
with
test = new arraylist<integer>(test); test1.add(test);
this makes copy of current test , adds list.
this still mean integer
elements contained in arraylist
exhibit same bug, since shallow copy, since not modifying them, ok case.
Comments
Post a Comment