This is what happens when you add array list a to array list j 10 times. 
This is what happens when you add 1 to the list of array a .

Thus, basically all 10 ArrayList j indices point to one ArrayList a . Therefore, printing a value from any index j will always give you the same result.
So that each pointer points to a different list of arrays:

source share