Java如何拷贝数据?

2024-01-08 12:11:36

Java如何拷贝数据?

在这里插入图片描述

在这里插入图片描述

在 Java 中,数组和集合的深拷贝与浅拷贝的概念与复制对象的引用和内容相关。深拷贝是创建一个新对象,并递归地复制其所有内容,而浅拷贝则只是复制对象的引用

数组的深拷贝与浅拷贝:

1. 深拷贝数组:
import java.util.Arrays;

public class DeepCopyArrayExample {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3, 4, 5};
        
        // 深拷贝数组
        int[] deepCopyArray = Arrays.copyOf(originalArray, originalArray.length);

        // 修改原始数组内容
        originalArray[0] = 100;

        // 输出深拷贝数组
        System.out.println("Original Array: " + Arrays.toString(originalArray));
        System.out.println("Deep Copy Array: " + Arrays.toString(deepCopyArray));
    }
}

在上述例子中,Arrays.copyOf() 方法创建了一个新的数组,并复制了原始数组的内容。修改原始数组不会影响深拷贝的数组。

2. 浅拷贝数组:
public class ShallowCopyArrayExample {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3, 4, 5};

        // 浅拷贝数组
        int[] shallowCopyArray = originalArray;

        // 修改原始数组内容
        originalArray[0] = 100;

        // 输出浅拷贝数组
        System.out.println("Original Array: " + Arrays.toString(originalArray));
        System.out.println("Shallow Copy Array: " + Arrays.toString(shallowCopyArray));
    }
}

在浅拷贝中,shallowCopyArray 实际上是引用了原始数组,因此修改原始数组会影响到浅拷贝的数组。

集合的深拷贝与浅拷贝:

在 Java 中,通常使用构造函数或者 clone 方法来实现集合的深拷贝或浅拷贝。

1. 深拷贝集合:
import java.util.ArrayList;
import java.util.List;

public class DeepCopyListExample {
    public static void main(String[] args) {
        List<Integer> originalList = new ArrayList<>();
        originalList.add(1);
        originalList.add(2);
        originalList.add(3);

        // 深拷贝集合
        List<Integer> deepCopyList = new ArrayList<>(originalList);

        // 修改原始集合内容
        originalList.set(0, 100);

        // 输出深拷贝集合
        System.out.println("Original List: " + originalList);
        System.out.println("Deep Copy List: " + deepCopyList);
    }
}
2. 浅拷贝集合:
import java.util.ArrayList;
import java.util.List;

public class ShallowCopyListExample {
    public static void main(String[] args) {
        List<Integer> originalList = new ArrayList<>();
        originalList.add(1);
        originalList.add(2);
        originalList.add(3);

        // 浅拷贝集合
        List<Integer> shallowCopyList = originalList;

        // 修改原始集合内容
        originalList.set(0, 100);

        // 输出浅拷贝集合
        System.out.println("Original List: " + originalList);
        System.out.println("Shallow Copy List: " + shallowCopyList);
    }
}

在集合中,深拷贝通常需要手动创建一个新的集合,并将原始集合中的元素逐个复制到新集合中。而浅拷贝则可以使用构造函数或者 clone 方法来简单地创建一个引用了原始集合的新集合。需要注意的是,如果集合中的元素是可变对象,深拷贝时还需要对元素进行递归的深拷贝。

文章来源:https://blog.csdn.net/weixin_46225503/article/details/135438333
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。