简体   繁体   English

如何从java ArrayList复制对象?

[英]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.

相关问题 深拷贝 Object ArrayList in Java - Deep copy Object ArrayList in Java 如何从ArrayList创建Object [] [] <Object[]> 在java中 - How to create Object[][] from ArrayList<Object[]> in java 如何从 Java 中的 ArrayList 中删除特定对象? - How to remove specific object from ArrayList in Java? 如何从java中的Object ArrayList获取ArrayList值? - How to get ArrayList value from a Object ArrayList in java? 如何使用一对 object ZA2F2ED4F8EBC2CBB4C21A29DC40AB6 将 HashMap 中的值复制到 ArrayList - How to copy values from HashMap into an ArrayList using a Pair object class java arraylist复制的arraylist - java arraylist of arraylist copy 如何在Java中将数组列表从一个类复制到另一个类? - How do I copy an arraylist from one class to another in Java? 如何转换属性ArrayList <String> 或ArrayList <Integer> 或ArrayList <MYCLASS> 从JSON对象到Java对象? - How to convert an attribute ArrayList<String> or ArrayList<Integer> or ArrayList<MYCLASS> from a JSON object to a java object? 如何将临时 ArrayList 中的元素复制到新创建的 object 中的私有 ArrayList 中? - How to copy elements from temporary ArrayList into private ArrayList in newly created object? 如何根据对象的条件从java中的数组列表返回(和删除)对象 - How to return (and remove) an object from an arraylist in java based on a condition of that object
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM