java 深拷贝与浅拷贝

在 Java 中,List 是一个接口,常见的实现类有 ArrayList 和 LinkedList。当我们需要复制一个 List 时,通常有两种方法:浅拷贝和深拷贝。浅拷贝只复制 List 中的引用,而深拷贝则会复制 List 中的所有元素。下面我们来看一下如何实现 List 的深拷贝。

假设我们有一个 Person 类,包含 name 和 age 两个属性:

csharp
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

现在我们有一个 List,其中包含了一些 Person 对象:

java
import java.util.ArrayList;
import java.util.List;

public class DeepCopyExample {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        list.add(new Person("Tom", 18));
        list.add(new Person("Jerry", 20));
        list.add(new Person("Mike", 22));
        System.out.println("Original list: " + list);
    }
}

要实现 List 的深拷贝,可以使用 java.util.ArrayList 的构造函数:

java
import java.util.ArrayList;
import java.util.List;

public class DeepCopyExample {
    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        list.add(new Person("Tom", 18));
        list.add(new Person("Jerry", 20));
        list.add(new Person("Mike", 22));
        System.out.println("Original list: " + list);

        // 深拷贝
        List<Person> copy = new ArrayList<>(list);
        System.out.println("Copy list: " + copy);
    }
}

上述代码中,我们使用 ArrayList 的构造函数来创建一个新的 List,并将原始列表作为参数传递进去。这样创建的新列表就是原始列表的深拷贝。

 
 

猜你喜欢

转载自blog.csdn.net/luansj/article/details/131114218