java list 复制工具
时间: 2024-10-11 19:04:03 浏览: 20
java List 深度复制方法
在Java中,List复制通常有几种常见的方法:
1. **浅复制** (shallow copy):如果你的List包含的是基本类型的元素或者实现了Cloneable接口的对象,可以简单地使用`clone()`方法。例如:
```java
List<String> original = new ArrayList<>();
List<String> copied = original.stream().collect(Collectors.toList());
```
这种方法会创建一个新的List,但是内部引用了原列表中的元素。
2. **深复制** (deep copy):如果List包含复杂对象,比如自定义类或集合,你需要创建新对象并将其添加到新的List。例如,使用序列化反序列化的策略:
```java
ObjectMapper mapper = new ObjectMapper();
List<MyObject> copied = mapper.readValue(mapper.writeValueAsString(original), typeOf(MyObject).getConstructor().newInstance().getClass());
```
或者递归地复制所有子对象。
3. **构造函数**:对于实现了`Cloneable`接口并且有无参构造函数的对象,你可以通过`Arrays.copyOfRange()`结合循环实现复制:
```java
List<MyClonableObject> copied = new ArrayList<>(original.size());
for (MyClonableObject obj : original) {
copied.add(obj.clone());
}
```
4. **Apache Commons Lang库**:提供了一个`Collections.copy()`方法,可以直接复制整个List,包括元素的顺序:
```java
List<String> copied = new ArrayList<>(Objects.requireNonNull(original));
```
记得在使用前检查List的内容是否适合上述方法,并考虑性能影响。
阅读全文