在java中将一个列表插入另一个列表?

新手上路,请多包涵

我有以下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 进行任何更改,相同的更改是否反映到 anotherList ,反之亦然?

原文由 user1016403 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 457
2 个回答

一个对象在内存中只有一次。您对 list 的第一次添加只是添加了对象引用。

anotherList.addAll 也只会添加引用。所以内存中仍然只有 100 个对象。

如果您通过添加/删除元素更改 list ,则 anotherList 不会更改。但是,如果您更改 list 中的任何对象,那么当从 anotherList 访问它时,它的内容也将被更改,因为两个列表都指向相同的引用。

原文由 MicSim 发布,翻译遵循 CC BY-SA 3.0 许可协议

100,它将包含相同的引用。因此,如果您对 list 中的特定对象进行更改,它将影响 anotherList 中的同一对象。

添加或删除任何列表中的对象都不会影响另一个。

listanotherList 是两个不同的实例,它们只持有对“内部”对象的相同引用。

原文由 setzamora 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题