91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java list如何實現深拷貝

小樊
265
2024-07-03 04:04:16
欄目: 編程語言

在Java中,要實現List的深拷貝,可以通過以下幾種方法:

  1. 使用循環遍歷原始List,創建一個新的List,并將原始List中的每個元素逐個添加到新的List中。這種方法適用于List中的元素是基本數據類型或者不可變對象。
List<String> originalList = new ArrayList<>();
// 添加元素到原始List
List<String> newList = new ArrayList<>();
for (String element : originalList) {
    // 對于不可變對象,直接添加
    newList.add(element);
    // 對于可變對象,需要進行克隆操作,確保深拷貝
    // newList.add(element.clone());
}
  1. 使用序列化和反序列化實現深拷貝。將原始List對象進行序列化,然后再反序列化成一個新的List對象。這種方法適用于List中的元素實現了Serializable接口。
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中元素的引用指向同一個對象。

0
泾川县| 清丰县| 景德镇市| 滨海县| 江西省| 怀远县| 泽州县| 水城县| 华坪县| 九龙坡区| 集安市| 衡阳县| 牙克石市| 溆浦县| 绥滨县| 萍乡市| 卓尼县| 保定市| 石狮市| 定南县| 大田县| 崇左市| 工布江达县| 布尔津县| 右玉县| 齐河县| 姜堰市| 句容市| 靖边县| 云浮市| 夏津县| 武邑县| 双辽市| 民和| 玛沁县| 慈利县| 邓州市| 布尔津县| 黄梅县| 都匀市| 同心县|