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?
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.)