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 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 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 copy = new ArrayList<>(list);         System.out.println("Copy list: " + copy);     } }

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

posted @ 2024-04-11 12:30  木头左  阅读(58)  评论(0编辑  收藏  举报