java 新建一个 list3 把list1 和list2 里面的数据 复制到 list3 里面 list3 是里面的 对象是引用还是 真的复制了一份
时间: 2024-10-17 12:12:02 浏览: 21
Java将2个List集合合并到一个List里面并排序工具类
当你在Java中创建一个新的List并将其他两个List的内容复制到新的List时,实际上是创建了一个新的引用列表(List)。这意味着你在list3中存储的是原list1和list2中的对象引用,而不是对对象本身的副本。
如果你有一个对象类型为`MyObject`的`List<MyObject>`, 并执行以下操作:
```java
List<MyObject> list1 = ...; // 原始列表
List<MyObject> list2 = ...; // 另一个原始列表
List<MyObject> list3 = new ArrayList<>(list1); // 或者使用addAll(list1)
// 或者
list3.addAll(list2);
```
在这个例子中,`list3.add()`方法添加的是list1或list2中的对象引用,而不是对象本身。所以,如果你修改了list3中的某个元素,会影响到原本的list1和list2,因为它们都指向同一个对象。
如果你希望每个列表都有自己的独立对象副本,你需要遍历原列表并调用`new MyObject(originalObject)`来创建新的实例。例如:
```java
for (MyObject obj : list1) {
list3.add(new MyObject(obj));
}
```
但请注意这可能会消耗更多内存,尤其是对于大型对象或复杂数据结构。
阅读全文