java8list的深拷贝
时间: 2023-11-12 11:53:18 浏览: 133
Java 8 中的 List 接口并没有提供深拷贝的方法,因此需要自行实现。以下是一种可能的实现方式:
1. 首先需要确保 List 中的元素实现了 Serializable 接口,这样才能进行序列化和反序列化操作。
2. 使用 ObjectOutputStream 将 List 对象序列化为字节数组。
3. 使用 ByteArrayInputStream 和 ObjectInputStream 将序列化后的字节数组反序列化为新的 List 对象。
4. 返回新的 List 对象。
示例代码如下:
```
import java.io.*;
import java.util.*;
public class DeepCopyList {
public static <T extends Serializable> List<T> deepCopy(List<T> list) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(list);
oos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
List<T> newList = (List<T>) ois.readObject();
ois.close();
return newList;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
List<Integer> list2 = deepCopy(list1);
System.out.println(list1); // [1, 2, 3]
System.out.println(list2); // [1, 2, 3]
System.out.println(list1 == list2); // false
System.out.println(list1.equals(list2)); // true
}
}
```
阅读全文