user309281 user309281 - 8 days ago 5
Java Question

Java ArrayList copy

I have an

ArrayList
l1
of size 10. I assign
l1
to new list reference type
l2
. Will
l1
and
l2
point to same
ArrayList
object? Or is a copy of the
ArrayList
object assigned to
l2
?

When using the
l2
reference, if I update the list object, it reflects the changes in the
l1
reference type also.

For example:

List<Integer> l1 = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
l1.add(i);
}

List l2 = l1;
l2.clear();


Is there no other way to assign a copy of a list object to a new reference variable, apart from creating 2 list objects, and doing copy on collections from old to new?

Thanks in advance.

Answer

Yes, assignment will just copy the value of l1 (which is a reference) to l2. They will both refer to the same object.

Creating a shallow copy is pretty easy though:

List<Integer> newList = new ArrayList<>(oldList);

(Just as one example.)