在Java中,要實現List的深拷貝,可以通過以下幾種方法:
List<String> originalList = new ArrayList<>();
// 添加元素到原始List
List<String> newList = new ArrayList<>();
for (String element : originalList) {
// 對于不可變對象,直接添加
newList.add(element);
// 對于可變對象,需要進行克隆操作,確保深拷貝
// newList.add(element.clone());
}
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class DeepCopyUtil {
@SuppressWarnings("unchecked")
public static <T> List<T> deepCopy(List<T> originalList) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(originalList);
oos.close();
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
List<T> newList = (List<T>) ois.readObject();
ois.close();
return newList;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
List<String> originalList = new ArrayList<>();
// 添加元素到原始List
List<String> newList = deepCopy(originalList);
}
}
通過這兩種方法,可以實現List的深拷貝操作。需要注意的是,如果List中的元素是可變對象,需要確保進行適當的克隆操作,以避免淺拷貝導致原始List和新List中元素的引用指向同一個對象。