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

djc*_*535 5 java collections

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

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

das*_*zul 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
Run Code Online (Sandbox Code Playgroud)