将对象添加到多个java集合中:这是否会生成多个副本?

时间:2012-11-12 23:49:19

标签: java collections

如果我将同一个对象添加到两个不同的集合中,是否会在每个集合中复制该对象,或者集合是否会引用同一个对象?

我要做的是使用两个不同的集合来管理同一组对象,但允许我使用不同的方法来访问和排序对象。

1 个答案:

答案 0 :(得分:12)

不,通过向集合添加对象,您只是将引用传递给该对象(对象存储在堆上的地址)。因此,将多个对象多次添加到不同的集合中就像分发名片一样,您不会自己复制,但多人知道在哪里找到您;)

这里有一些代码:

LinkedList<MyObject> list1 = new LinkedList<MyObject>();
LinkedList<MyObject> list2 = new LinkedList<MyObject>();
MyObject obj = new MyObject();
list1.add(obj);
list2.add(obj); // This does not create a copy of the object, only the value of the address where to find the object in the heap (memory) is being copied