How can i copy a ArrayList
containing objects with ArrayList
members. Also it might be possible, that the members of the objects in the list also containing again ArrayList
members, and so on. So is there a generic way to copy list of objects regardless of their members?
Implementing the Clone Interface
for all involved objects seems to be a bad idea, since I read that its broken.
I created a small SSCCE to exemplify my problem:
class Foobar {
public List<String> listMember;
public String primitiveMember;
public Foobar() {
listMember = new ArrayList<String>(Arrays.asList("a", "b", "c"));
primitiveMember = "testABC";
}
}
// Create list of Foobar
List<Foobar> foobars = new ArrayList<Foobar>();
foobars.add(new Foobar());
// Copy list of Foobar
List<Foobar> foobarsCopy = new ArrayList<Foobar>();
foobarsCopy.add(null);
Collections.copy(foobarsCopy, foobars);
// Modify source list
foobars.get(0).listMember.add("-1-");
// Output of references
System.out.println("Sourcelist has size of: " + foobars.get(0).listMember.size());
System.out.println("Destinationlist has size of: " + foobarsCopy.get(0).listMember.size());
System.out.println("Function 'Collections.copy(...) does not copy list members of members?: " + (foobars.get(0).listMember.size() == foobarsCopy.get(0).listMember.size()) + " - References: " + foobars.get(0).listMember.hashCode() + " vs " + foobarsCopy.get(0).listMember.hashCode());