ArrayList深层复制

时间:2015-10-11 18:00:09

标签: java arrays arraylist deep-copy

我有以下代码创建了一个arraylist的浅层副本,但是,我想更改它以创建一个深层副本,但我不知道如何。我试过在网上看,但找不到答案。

我的代码现在是:

public class Array {

public static void main(String[] args) {
    ArrayList<Double> list1 = new ArrayList<>();
    list1.add(1.5);
    list1.add(2.5);
    list1.add(3.5);

    ArrayList<Double> list2 = (ArrayList<Double>)list1.clone();
    ArrayList<Double> list3 = list1;

    list2.add(4.5);
    list3.remove(1.5);
   System.out.println("list1 is " + list1);
   System.out.println("list2 is " + list2);
   System.out.println("list3 is " + list3);
    }

2 个答案:

答案 0 :(得分:0)

您可以使用Apache Commons的SerializationUtils。
要使用SerializationUtils,类必须实现 Serializable 接口。 Reference

答案 1 :(得分:0)

深拷贝将是这样

ArrayList<Double> list1 = new ArrayList<>();
    list1.add(1.5);
    list1.add(2.5);
    list1.add(3.5);

ArrayList<Double> list2 = new ArrayList<Double>();

for (Double d : list1){
list2.add(d);
}