Nó clone cai list nhưng giữ tham chiếu đên element, nhưng nếu em thay Person bằng kiểu Interger, String thì nó sẽ ra ket qua khac
ArrayList<Integer> l1 = new ArrayList<Integer>();
l1.add(1);
ArrayList<Integer> l2 = (ArrayList<Integer>) l1.clone();
l2.set(0, 2);
System.out.println("list1: " + l1);
System.out.println("list2: " +l2);
Do Integer va String điều là immuable.
mình đan giải thích cái ý này
ArrayList<Person> list2 = (ArrayList<Person>) list1.clone();
list2.get(0).setA(13);
list1.clear();
va
ArrayList<Person> list2 = (ArrayList<Person>) list1
list2.get(0).setA(13);
list1.clear();
sẽ khác nhau đấy