如何在 Java 中复制数组列表?

How to Duplicate an array list in Java?

我有一个数组列表,用于存储名为 Movie 的对象。这些对象包含名称、发行日期、流派等变量。有没有办法复制数组,这样我就可以一个一个地对它进行排序,保持原始数据不变。我将在文本区域中显示数据。

使用

List<Movie> newList = new ArrayList<>(existingList);

您可以创建旧 ArrayList 的副本:

List<Movie> newList = new ArrayList<Movie>(oldList);

您应该知道,这会创建原始 ArrayList 浅拷贝 ,因此两个列表中的所有对象都是相同的,但是两个列表将是不同的对象。

虽然问题有歧义,但是可以用

List<Integer> newList = new ArrayList<Integer>(oldList); 复制旧的 List

Arrays.copyOf()复制数组。

System.arraycopy()

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

Source

每个集合 Class 都提供一个构造函数来创建重复的集合对象。

List<Movie> newList = new ArrayList<Movie>(oldList);

因为 newList 和 oldList 是不同的对象,所以您也可以创建该对象的克隆-

public static List<Movie> cloneList(List<Movie> oldList) {
    List<Movie> clonedList = new ArrayList<Movie>(oldList.size());
    for (Movie movie: oldList) {
        clonedList.add(new Movie(movie));
    }
    return clonedList;
}

A​​rrayList 也是动态数组,但是如果你想把它存储在数组中,你可以这样做-

int n=oldList.size();
Movie[] copiedArray=new Movie[n];

for (int i=0;i<oldList.size();i++){
copiedArray[i]=oldList.get(i);
}

您可以从原始数组列表中获取数组,如下所示:

Movie movieArray[] = arrayListMovie
    .toArray(new Movie[arrayListMovie.size()]);