List<List<Integer>> bigList = new ArrayList<>();
List<Integer> list = new ArrayList<>();
list.add(1);
bigList.add(list);
list.clear();
list.add(2);
bigList.add(list);
System.out.println(bigList);
上面这段代码,一开始我以为结果是
[[1], [2]]
实际上输出结果是
[[2], [2]]
分析:
- 以前一般向ArrayList中添加的都是基本数据类型或者String类型,而这次是嵌套ArrayList,list其实自始至终只是同一个对象实例,我搞混淆了。
- 执行过程
list.add(1)后,list变为[1];bigList.add(list)后,bigList应该是[[1]];list.clear()后,list变为[],由于是同一个对象实例,bigList此时变为[[]];list.add(2)后,list变为[2],同时bigList变为[[2]];bigList.add(list)后,bigList变为[[2], [2]]










