Gán Giá Trị Cho ArrayList Trong Java? | How Kteam

Do ArrayList chỉ chứa các object mà object là kiểu tham chiếu nên cho dù có sao chép (tạo mới vùng nhớ cho ArrayList) thì dữ liệu bên trong (các object) cũng tham chiếu đến nhau thôi. Để giải quyết vấn đề hoặc là bạn tìm cấu trúc dữ liệu khác để lưu trữ hoặc bạn có thể xử lý như sau:

+ Trong lớp của bạn, bạn tạo ra 1 hàm clone mục đích là để sao chép các đối tượng theo cách của bạn. Nhớ là hàm này để public và hàm này là override cho hàm clone của lớp Object.

+ Duyệt qua các phần tử của ArrayList ban đầu sau đó add mới vào ArrayList copy.

Đây là code minh hoạ của mình:

public class Test { public static void main(String[] args) { ArrayList<ObjectClass> arr = new ArrayList<ObjectClass>(); arr.add(new ObjectClass(2, 3)); arr.add(new ObjectClass(4, 5)); ArrayList<ObjectClass> arr2 = new ArrayList<ObjectClass>(); // Duyệt qua tất cả các phần tử của arr for (ObjectClass item: arr) { arr2.add(item.clone()); // thêm object đã được tạo mới (clone) vào arr2 } arr2.get(0).x--; System.out.println("arr.x: " + arr.get(0).x + " arr2.x: " + arr2.get(0).x); } } // lớp do mình tạo ra class ObjectClass { public ObjectClass(int x, int y) { this.x = x; this.y = y; } public int x; public int y; @Override public ObjectClass clone() { // hàm clone mình tự viết mục đích là tạo ra đối tượng mới và sao chép nội dung của đối tượng cũ. return new ObjectClass(this.x, this.y); } }

Từ khóa » Gán Giá Trị Cho Mảng Java