Tôi thấy một số hành vi mà tôi hoàn toàn không thể hiểu được và đã tự hỏi liệu có ai đó sẽ tử tế để giải thích chính xác những gì đang xảy ra ở đây không. Đây là mã tôi hiện đang có.Tại sao tôi xóa một phần tử khỏi ArrayList sai?
public class MyClass {
ArrayList<String> myList = new ArrayList<String>();
public MyClass() {
populate();
removeData(myList);
}
private void populate() {
myList.add("Some data");
myList.add("Some more data");
myList.add("Even more data");
}
private void removeData(ArrayList<String> list) {
ArrayList<String> temp = new ArrayList<String>();
temp = list;
temp.remove("Some data");
}
}
Bây giờ vì lý do nào đó, sau khi tôi chạy mã này, dữ liệu sẽ bị xóa khỏi ArrayList "myList". Tại sao điều này xảy ra mặc dù tôi chỉ phải loại bỏ dữ liệu từ một biến bên trong phương thức "removeData" chứ không phải từ trường "myList"?
nhưng bạn đã gán 'temp = list' để cơ bản tham chiếu trỏ đến cùng một đối tượng – ochi
tài liệu tham khảo, bạn cần phải đọc thêm về Java và hướng đối tượng lập trình hướng cơ bản –
Bởi vì templist = mylist được gán tham chiếu của danh sách của tôi để templist.so bất cứ điều gì bạn làm trên templist sẽ ảnh hưởng đến danh sách của tôi. –