【发布时间】:2016-03-24 01:49:10
【问题描述】:
List<List<Integer>> list = new LinkedList<List<Integer>>();
List<Integer> tmp = new LinkedList<Integer>();
tmp.add(2);
list.add(tmp);
tmp.add(3);
list.add(tmp);
列表的结果是[[2,3],[2,3]]; 我只是很困惑为什么它不是[[2],[2,3]]。当我使用list.add(new LinkedList<Integer>(tmp)) 时,它会起作用。我打印tmp,还是[2], [2,3],没变。为什么会这样?
提前谢谢你。
【问题讨论】:
-
因为 list 的两个元素都指向同一个对象 temp。如果您想要结果 [[2],[2,3]],您可以创建新的另一个 tmp 对象。
-
在当前代码中,您只实例化了一次
tmp,因此将它添加到list中两次,但它是同一个对象。