2012-11-12 31 views
4

如果我将相同的对象添加到两个不同的集合中,是否会在每个集合中创建对象的副本,或者集合是否获取对同一对象的引用?将对象添加到多个Java集合:这是否创建多个副本?

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

+3

的均引用同一个对象。如果对对象进行更改,它将反映在两个列表中。 – JustinKSU

+1

我怀疑/希望。谢谢你们。仍然习惯于没有明确指针的生活。 – djc6535

回答

10

不,通过将对象添加到集合中,您只是将对该对象的引用(对象存储在堆上的地址)传递给该对象。所以加入一个对象多次以不同的集合就像派发名片,你不重复自己,但多的人都知道在哪里可以找到你;)

这里是一些代码:

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