【发布时间】:2021-02-05 14:35:25
【问题描述】:
我遇到了奇怪的问题(至少对我来说很尴尬)。我有一个自定义对象列表。我正在添加这个自定义对象列表 2 个其他 ArrayLists。这是问题所在,当我更新列表之一(任何自定义对象的属性)时,它会更新其他列表中相同位置的对象。下面是代码
下面是自定义类的例子:
public class TestClass {
String name;
}
这是我创建数据集的方式:
TestClass testClass1 = new TestClass();
testClass1.name= "first";
TestClass testClass2 = new TestClass();
testClass2.name= "second";
List<TestClass> data = new ArrayList<>();
data.add(testClass1);
data.add(testClass2);
这是我在其他 2 个列表中添加数据集的方式:
List<TestClass> testListFirst = new ArrayList<>();
testListFirst.addAll(data);
List<TestClass> testListSecond = new ArrayList<>();
testListSecond.addAll(data);
当我更新一个列表中的一个元素时,它也会在第二个列表中更新:
testListFirst.get(0).name = "third";
如果我检查 testListFirst 它会更新为新值,但 testListSecond 也会更新。我的期望是 testListSecond 它不应该被更新,因为它们都列出了内存中指向不同对象的不同对象。如果我更新另一个不应该更新。如果我错了,请纠正我。非常感谢任何帮助。
【问题讨论】:
-
因为这里的对象是以引用方式调用的。
标签: java