[英]How to copy object from java ArrayList?
How to copy and edit object from arraylist without changing in original list?如何从arraylist复制和编辑对象而不更改原始列表? This is my test coding...这是我的测试代码...
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());
}
}
result..结果..
MyoMyo妙妙
copy list Doe pos 2 Min复制列表 Doe pos 2 分钟
copy list Doe pos 2 Min复制列表 Doe pos 2 分钟
original list Doe原始列表 Doe
Why changes in original list?为什么要更改原始列表? Please Help!!请帮忙!!
Person secondCopy = copyP;
您需要创建一个新的Person
对象,现在您只是将相同的对象分配给另一个变量,因此当您更改值时,原始值也会被修改
In this case Java is passing the objects by reference, so whatever the number of list
you'll create you'll working on you two first Person
instance.在这种情况下,Java 通过引用传递对象,因此无论您将创建多少个list
您都将处理两个第一个Person
实例。 You need you use the Clonable
on the Person
.您需要在Person
上使用Clonable
。
Something like就像是
class Person implement Clonable {
...
}
List<Person> clonePersons = new ArrayList<Person>();
for (Person p : persons)
clonePersons.add(p.clone());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.