Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中创建同一ArrayList的两个副本_Java_List_Arraylist_Core - Fatal编程技术网

如何在java中创建同一ArrayList的两个副本

如何在java中创建同一ArrayList的两个副本,java,list,arraylist,core,Java,List,Arraylist,Core,我试图创建一份列表副本以备备份,但当我对原始列表进行一些更改时,同样的更改也会反映在副本列表中。 请查找以下代码以供参考 class ListElement{ private String name; private Integer age; ListElement(String name, Integer age){ this.name = name; this.age = age; } public String g

我试图创建一份列表副本以备备份,但当我对原始列表进行一些更改时,同样的更改也会反映在副本列表中。 请查找以下代码以供参考

class ListElement{
    private String name;
    private Integer age;

    ListElement(String name, Integer age){
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}


public class ListUnionTest {

    public static void main(String[] ars){

        ListElement ele = new ListElement("ABC", 25);
        List<ListElement> list_1 = new ArrayList<ListElement>();
        list_1.add(ele);

        System.out.println("Before ADDALL --> " + list_1.get(0).getAge());

        List<ListElement> list_2 = new ArrayList<ListElement>();
        list_2.addAll(list_1);

        System.out.println("AFTER ADDALL --> " + list_2.get(0).getAge());

        list_1.get(0).setAge(30);

        System.out.println("after change in List_1  orginal list value  --> " + list_1.get(0).getAge());
        System.out.println("after change List_1 copy list value --> " + list_2.get(0).getAge());

    }
}

Actual output:
Before ADDALL --> 25
AFTER ADDALL --> 25
after change in List_1  orginal list value --> 30
after change List_1 copy list value --> 30


Expected output:
Before ADDALL --> 25
AFTER ADDALL --> 25
after change in List_1  orginal list value --> 30
after change List_1 copy list value --> 25
类列表元素{
私有字符串名称;
私人整数年龄;
ListElement(字符串名称,整数期限){
this.name=名称;
这个。年龄=年龄;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数期限){
这个。年龄=年龄;
}
}
公共类列表测试{
公共静态void main(字符串[]ars){
ListElement元素=新的ListElement(“ABC”,25);
List_1=新的ArrayList();
列表1.添加(ele);
System.out.println(“在ADDALL-->”之前+list_1.get(0.getAge());
List_2=新的ArrayList();
列表2.addAll(列表1);
System.out.println(“AFTER ADDALL-->”+list_2.get(0.getAge());
列表1.获取(0).设置(30);
System.out.println(“列表_1原始列表值更改后-->”+List_1.get(0.getAge());
System.out.println(“更改后列表\u 1副本列表值-->”+列表\u 2.get(0.getAge());
}
}
实际产量:
添加所有-->25之前
加总-->25后
列表更改后\u 1原始列表值-->30
更改列表后\u 1复制列表值-->30
预期产出:
添加所有-->25之前
加总-->25后
列表更改后\u 1原始列表值-->30
更改列表后\u 1复制列表值-->25
因此,我丢失了旧数据。

听说过“对象引用”这个词吗?听说过“对象引用”这个词吗?