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

标签 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 进行任何更改,相同的更改是否会反射(reflect)到 anotherList,反之亦然?

最佳答案

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

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

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

关于java - 在java中将一个列表插入另一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11273440/

相关文章:

Java,简化检查 int 数组是否包含 int

java - 在 java 线程内停止播放器 (JLayer)

java - 使用远程 'chromedriver.exe' 文件设置 Chrome WebDriver

java - 属性 : system vs. 部署描述符与属性文件的优先级

java - 带有服务器发送事件的 JMeter 并行请求

java - 数据库行中的公式 - Java

java - If 语句不接受正确的值

java - JAXB 解码 xml 而不使用 package-info.java

java - 解释一下 Spring MVC Controller 的行为

Java 如何编写一个通用Util来打印所有函数当前执行的函数名称?