Java容器:同一个对象可以同时存在多个容器中吗?

时间:2013-12-26 13:41:24

标签: java containers

我们说我有:

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)));

我得到了答案“真实”

有人可以解释为什么结果答案以及答案如何(如果可能)会变为“假”?

3 个答案:

答案 0 :(得分:3)

输出为真。因为该对象在两个列表中 注意:至少如果您遵循equals()课程中的MyClass规则。

答案 1 :(得分:2)

是。相同的参考值可以在两个容器中。

在您的示例中,一个名为MyClass的{​​{1}}实例已添加到列表cl1,输出应为l2

答案 2 :(得分:1)

写作时

MyClass c

这是对象的引用,而不是对象本身。

因此,当您将其添加到容器时,您将添加引用的副本,而不是对象的副本或对象本身。

您可以在任意数量的容器或数据结构中引用同一对象,所有这些引用都将指向同一个对象。