以下代码输出
[[100, 200, 300], [100, 200, 300]].
然而,我期望的是
[[100, 200, 300], [100, 200]],
我哪里错了?
public static void main(String[] args) {
ArrayList<ArrayList<Integer>> outer = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> inner = new ArrayList<Integer>();
inner.add(100);
inner.add(200);
outer.add(inner);
outer.add(inner);
outer.get(0).add(300);
System.out.println(outer);
}
原文由 Jie 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在将对同一内部
ArrayList
的引用添加到外部列表两次。因此,当您更改内部列表(通过添加 300)时,您会在“两个”内部列表中看到它(实际上只有一个内部列表,其两个引用存储在外部列表中)。为了得到你想要的结果,你应该创建一个新的内部列表: