I tried to add 1D ArrayList into 2D ArrayList like the following code, but the output was
[34, 35, 36]
[[34, 35, 36]]
[4, 5, 6] [[4, 5, 6], [4, 5, 6]] <- the correct output would be [[34, 35, 36], [4, 5, 6]].
the previous one was overwritted, how can I solve this problem?
public static void main(String[] args) { ArrayList<Integer> a = new ArrayList<Integer>(); ArrayList<ArrayList<Integer>> d = new ArrayList<ArrayList<Integer>>(); a.add(34); a.add(35); a.add(36); d.add(a); System.out.println(a); System.out.println(d); a.clear(); a.add(4); a.add(5); a.add(6); d.add(a); System.out.println(a); System.out.println(d); }
Advertisement
Answer
You put the array list a
into the list d
as object, not only its content. Any changes you make to a
after that will be reflected in d
as well. To avoid that make a copy of a
before putting it into d
.