我们说我有:
ArrayList l2 = new ArrayList();
ArrayList l1 = new ArrayList();
MyClass c = new MyClass();
l1.add(c);
l2.add(c);
我做了:
System.out.println(l1.contains(l2.get(0)));
我得到了答案“真实”
有人可以解释为什么结果答案以及答案如何(如果可能)会变为“假”?
答案 0 :(得分:3)
输出为真。因为该对象在两个列表中
注意:至少如果您遵循equals()
课程中的MyClass
规则。
答案 1 :(得分:2)
是。相同的参考值可以在两个容器中。
在您的示例中,一个名为MyClass
的{{1}}实例已添加到列表c
和l1
,输出应为l2
。
答案 2 :(得分:1)
写作时
MyClass c
这是对象的引用,而不是对象本身。
因此,当您将其添加到容器时,您将添加引用的副本,而不是对象的副本或对象本身。
您可以在任意数量的容器或数据结构中引用同一对象,所有这些引用都将指向同一个对象。