java 包含list 的对象怎样copy
时间: 2023-09-15 13:18:41 浏览: 128
在Java中,包含List的对象可以通过深拷贝和浅拷贝来复制。浅拷贝只会复制对象的引用,而深拷贝会复制对象的所有内容。
方法1:使用Java 8的Stream API进行深拷贝
```
List<T> originalList = new ArrayList<T>();
List<T> copiedList = originalList.stream().map(x -> x.clone()).collect(Collectors.toList());
```
方法2:使用序列化进行深拷贝
```
public static <T extends Serializable> List<T> deepCopy(List<T> list) throws IOException, ClassNotFoundException {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(list);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
@SuppressWarnings("unchecked")
List<T> copiedList = (List<T>) in.readObject();
return copiedList;
}
```
方法3:使用Apache Commons Collections工具类进行浅拷贝
```
List<T> copiedList = (List<T>) org.apache.commons.collections4.ListUtils.clone(originalList);
```
阅读全文