📜  复制arraylist java(1)

📅  最后修改于: 2023-12-03 15:37:50.611000             🧑  作者: Mango

复制 ArrayList in Java

在 Java 中复制 ArrayList 通常有两种方法,可以使用 clone() 方法或使用 addAll() 方法。

使用 clone() 方法

clone() 方法可以用来创建一个 ArrayList 的浅复制。浅复制意味着它将复制引用,而不是实例本身。这意味着如果原始 ArrayList 更改,则复制 ArrayList 也会更改,因为它们引用相同的对象。

下面是一个使用 clone() 方法的示例程序:

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

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

    List<Integer> copiedList = (List<Integer>) ((ArrayList<Integer>) originalList).clone();

    System.out.println("Original list: " + originalList);
    System.out.println("Copied list: " + copiedList);
  }
}

输出结果如下:

Original list: [1, 2, 3]
Copied list: [1, 2, 3]

注意:将 List 转换为 ArrayList 并强制转型是必需的,否则将无法使用 clone() 方法。

使用 addAll() 方法

addAll() 方法可以用来创建一个 ArrayList 的深复制。深复制意味着它将复制实例,而不是只复制引用。

下面是一个使用 addAll() 方法的示例程序:

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

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

    List<Integer> copiedList = new ArrayList<>(originalList);

    System.out.println("Original list: " + originalList);
    System.out.println("Copied list: " + copiedList);
  }
}

输出结果如下:

Original list: [1, 2, 3]
Copied list: [1, 2, 3]

注意:使用 addAll() 方法必须先创建一个新的 ArrayList,并将原始 ArrayList 传递给它的构造函数。

注意事项

上述两种方法都只适用于可序列化的对象,因为它们需要创建相同的对象类型。

另外,请注意,这些方法都只是复制了 ArrayList 本身,但没有复制 ArrayList 中存储的对象。如果你需要复制对象本身,你需要在复制 ArrayList 后对每个对象执行深复制。