在 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,并将原始列表作为参数传递进去。这样创建的新列表就是原始列表的深拷贝。