在多次添加同一个list对象到另一个list里的时候
List<List<Integer>> listtwo = new LinkedList<>();
List<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
listtwo.add(list);
System.out.println(listtwo);//[[1, 2, 3, 4, 5]]
list.add(6);
listtwo.add(list);
System.out.println(listtwo);//[[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]
在这里有一个疑问:为什么第二次输出,会输出两个123456呢?
原因:listtwo.add(添加同一个list时)
listtwo内部形状 [[list(123456)], [list(123456)]] 这两个list实际上是同一个地址
改变一个后,listtwo中的两个值就都会因为这一个地址改变
解决办法list = new ArrayList<>(list); 这样操作后,虽然还是同名,但实际上listtwo中的list是两个不同的地址了呢
List<List<Integer>> listtwo = new LinkedList<>();
List<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
listtwo.add(list);
System.out.println(listtwo);//[[1, 2, 3, 4, 5]]
list = new ArrayList<>(list);
list.add(6);
listtwo.add(list);
System.out.println(listtwo);//[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6]]
至于List作为参数传递时,是作为引用传递的