如何从java ArrayList复制对象?

如何从java ArrayList复制对象?,java,arraylist,Java,Arraylist,如何从arraylist复制和编辑对象而不更改原始列表? 这是我的测试代码 import java.util.ArrayList; import java.util.List; public class HelloWorld{ public static void main(String []args){ Person p = new Person("Myo", 25); Person p2 = new Person("Min", 25);

如何从arraylist复制和编辑对象而不更改原始列表? 这是我的测试代码

import java.util.ArrayList;
import java.util.List;
public class HelloWorld{
     public static void main(String []args){
        Person p = new Person("Myo", 25);
        Person p2 = new Person("Min", 25);
        ArrayList<Person> persons = new ArrayList<Person>(); 
         persons.add(p);
         persons.add(p2);
        System.out.println(persons.get(0).getName());

        List<Person> clonePersons = new ArrayList<Person>();
        clonePersons.addAll(persons);
        final Person copyP = clonePersons.get(0);
        /*copyP.setName("Doe");
        copyP.setAge(23);*/

        Person secondCopy = new Person();
        secondCopy = copyP;
        secondCopy.setName("Doe");
        secondCopy.setAge(23);
        //clonePersons.set(0, new Person("Doe",23));
        clonePersons.set(0, secondCopy);

        System.out.println("copy list " + clonePersons.get(0).getName() + " pos 2 " + clonePersons.get(1).getName());

        System.out.println("original list " + persons.get(0).getName());
     }
}
import java.util.ArrayList;
导入java.util.List;
公共类HelloWorld{
公共静态void main(字符串[]args){
人员p=新人员(“Myo”,25);
人员p2=新人员(“最小”,25);
ArrayList persons=新建ArrayList();
增加(p);
新增(p2);
System.out.println(persons.get(0.getName());
List clonePersons=new ArrayList();
clonePersons.addAll(人);
最终用户copyP=clonePersons.get(0);
/*copyP.setName(“Doe”);
拷贝设置(23)*/
Person secondCopy=新的Person();
secondCopy=copyP;
第二副本。设置名称(“Doe”);
第二份。设置(23);
//clonePersons.set(0,新人(“Doe”,23));
clonePersons.set(0,第二份);
System.out.println(“复制列表”+clonePersons.get(0.getName()+“位置2”+clonePersons.get(1.getName());
System.out.println(“原始列表”+persons.get(0.getName());
}
}
结果

MyoMyo
复制列表Doe位置2分钟
复制列表Doe位置2分钟
原始清单能源部

为什么要更改原始列表?
请帮忙

Person secondCopy=copyP


您需要创建一个新的
Person
对象,现在您只是将同一个对象分配给另一个变量,因此当您更改值时,原始对象也会被修改

在这种情况下,Java通过引用传递对象,因此,无论您创建的
列表的数量是多少,您都将首先处理两个
个人
实例。 您需要在
Person
上使用
Clonable

差不多

class Person implement Clonable {
...
}


List<Person> clonePersons = new ArrayList<Person>();
for (Person p : persons)
    clonePersons.add(p.clone()); 
类人实现可克隆{
...
}
List clonePersons=new ArrayList();
用于(人员p:人员)
添加(p.clone());

但我需要从原始对象复制对象并分配给新的arraylist。您需要创建一个新对象,然后从原始对象将所有值分配给它。要么手工完成,要么使用类似于