在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中元素的引用指向同一个对象。