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

时间:2015-05-06 10:56:46

标签: java arrays arraylist duplication

我有一个存储名为Movie的对象的数组列表。对象包含变量,如名称,发布日期,类型等。有没有办法复制数组,所以我可以逐个排序,保持原始数据不变。我将在文本区域中显示数据。

6 个答案:

答案 0 :(得分:4)

使用

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

答案 1 :(得分:1)

您可以使用以下内容创建旧List<Movie> newList = new ArrayList<Movie>(oldList); 的副本

ArrayList

您应该知道这会创建原始{{1}}的浅层副本,因此两个列表中的所有对象都是相同的,但这两个列表将是不同的对象。

答案 2 :(得分:0)

虽然问题含糊不清,但您可以使用

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

Arrays.copyOf()复制数组。

答案 3 :(得分:0)

System.arraycopy()

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

Source

答案 4 :(得分:0)

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

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;
}

ArrayList也是动态数组,但是如果你想将它存储在数组中,你可以这样做 -

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

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

答案 5 :(得分:0)

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

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