我有以下java代码:
List<SomePojo> list = new ArrayList<SomePojo>();
//add 100 SomePojo objects to list.
现在列表有 100 个对象。
如果我再创建一个实例如下:
List<SomePojo> anotherList = new ArrayList<SomePojo>();
anotherList.addAll(list);
现在,内存中有多少对象:100 或 200 个对象?
在下面的行中,是添加对象还是仅引用?
anotherList.addAll(list);
如果我对 list
进行任何更改,相同的更改是否会反射(reflect)到 anotherList
,反之亦然?
最佳答案
一个对象在内存中只存在一次。您对 list
的第一次添加只是添加了对象引用。
anotherList.addAll
也只会添加引用。所以内存中仍然只有 100 个对象。
如果您通过添加/删除元素来更改 list
,则 anotherList
不会被更改。但是,如果您更改了 list
中的任何对象,那么当从 anotherList
访问它时,它的内容也会发生更改,因为两个列表都指向相同的引用。
关于java - 在java中将一个列表插入另一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11273440/