5

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

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

4

1 回答 1

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
于 2012-11-12T23:51:55.577 回答