【发布时间】:2020-06-15 05:41:50
【问题描述】:
这对你们中的许多人来说可能非常微不足道,但我找不到答案。提前感谢您的帮助。
简而言之,我浅拷贝了一个列表,然后修改其中一个元素,但更改不会反映在另一个列表中,尽管几乎每个资源都说它们只是对同一个对象的两个引用,并且在一个应该反映在另一个中。
附:我已经检查了诸如this one 之类的问题,这些问题阐明了黑白浅拷贝和深拷贝的区别。我的问题是,为什么尽管有这些理论,但有时浅拷贝的行为就像深拷贝一样。
List<Integer> lst1 = new ArrayList<>();
lst1.add(2);
lst1.add(6);
lst1.add(1);
lst1.add(4);
lst1.add(9);
lst1.add(5);
List<Integer> lst2 = new ArrayList<>(lst1);
lst1.set(0, 3);
System.out.println("lst1 = " + lst1);
System.out.println("lst2 = " + lst2);
结果:
lst1 = [3, 6, 1, 4, 9, 5]
lst2 = [2, 6, 1, 4, 9, 5]
【问题讨论】:
-
lst2 是一个新列表,将 lst1 传递给
new ArrayList..会创建它的副本
标签: java list collections copy