java arraylist赋值给另一个arraylist
时间: 2025-03-02 20:43:15 浏览: 31
### 将一个 `ArrayList` 的值复制到另一个 `ArrayList`
在 Java 中,有多种方式可以实现将一个 `ArrayList` 的全部元素复制到新的 `ArrayList` 实例中。以下是几种常用的方法:
#### 方法一:使用构造函数
通过传递现有的集合作为参数来创建一个新的 `ArrayList` 对象是最简单的方式之一。
```java
import java.util.ArrayList;
import java.util.Arrays;
public class CopyUsingConstructor {
public static void main(String[] args){
ArrayList<String> originalList = new ArrayList<>(Arrays.asList("Apple", "Banana", "Orange"));
// 使用构造函数复制列表
ArrayList<String> copiedList = new ArrayList<>(originalList);
System.out.println("Original List: " + originalList);
System.out.println("Copied List: " + copiedList);
}
}
```
这种方法利用了 `ArrayList(Collection<? extends E> c)` 构造器[^1],它接受任何实现了 Collection 接口的对象并将其所有元素添加到新构建的 `ArrayList` 中。
#### 方法二:使用 `addAll()` 方法
另一种常见的做法是先初始化目标 `ArrayList`,再调用其 `addAll()` 方法以追加源 `ArrayList` 中的所有元素。
```java
import java.util.ArrayList;
import java.util.Arrays;
public class CopyUsingAddAllMethod {
public static void main(String[] args){
ArrayList<Integer> sourceList = new ArrayList<>(Arrays.asList(1, 2, 3));
ArrayList<Integer> destinationList = new ArrayList<>();
// 调用 addAll() 复制列表项
boolean success = destinationList.addAll(sourceList);
System.out.println("Source List: " + sourceList);
System.out.println("Destination List after adding all elements: " + destinationList);
}
}
```
此代码片段展示了如何借助 `addAll()` 函数完成相同的操作。需要注意的是,如果目的地 `ArrayList` 已经包含了某些数据,则这些现有条目不会被覆盖;相反,来自源头的数据会被附加在其后面。
#### 方法三:浅拷贝 vs 深拷贝
上述两种方法都属于 **浅拷贝** ,即只复制对象引用而不克隆实际对象本身。对于基本类型的数组来说这通常不是问题,但对于包含复杂对象(比如自定义类实例)的情况则可能需要考虑执行深拷贝逻辑,以便完全独立于原始容器中的变化影响副本的内容。
为了达到真正的深拷贝效果,可以根据具体需求采取序列化反序列化的策略或是手动编写 clone 方法处理内部成员变量。
阅读全文
相关推荐


















