java 实体集合复制
时间: 2024-08-22 18:02:41 浏览: 51
在 Java 中,实体集合(通常指 List、Set 或 Map 等)的复制可以有多种方法,这取决于具体的需求和集合的内容。以下是几种常见的复制策略:
1. **浅复制**(Shallow Copy):如果集合包含的是基本类型的元素,或者集合本身是非引用数据类型(如 ArrayList),那么可以直接创建一个新的同类型集合并填充原集合的所有元素。
```java
List<String> original = new ArrayList<>();
// 添加一些元素...
List<String> copy = new ArrayList<>(original);
```
2. **深复制**(Deep Copy):对于集合中的复杂对象,比如自定义类实例,需要对每个元素进行深拷贝。可以使用序列化反序列化或者第三方库如 `org.apache.commons.lang3.CloneUtils` 进行复制。
```java
@Serializable
class MyClass {
// fields...
}
MyClass obj = ...;
MyClass deepCopy = (MyClass) SerializationUtils.clone(obj);
```
3. **Collection 类型的 clone() 方法**:对于实现了 Cloneable 接口的集合,例如 LinkedList,可以直接调用 `clone()` 方法得到浅复制。
```java
LinkedList<MyClass> original = ...;
LinkedList<MyClass> copy = (LinkedList<MyClass>) original.clone();
```
4. **迭代器+添加元素**:遍历原始集合,逐个添加到新集合中,适用于大部分情况。
```java
List<MyClass> original = ...;
List<MyClass> copy = new ArrayList<>();
for (MyClass element : original) {
copy.add(element);
}
```
阅读全文