为什么我从错误的ArrayList中删除一个元素?

Wod*_*dlo 5 java arraylist

我看到一些我无法理解的行为,并且想知道是否有人能够准确地解释这里发生了什么.这是我目前的代码.

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在由于某种原因,在我运行此代码后,数据将从ArrayList"myList"中删除.即使我只是从方法"removeData"中的变量中删除数据而不是从字段"myList"中删除数据,为什么会发生这种情况?

Sur*_*tta 6

 temp = list;
Run Code Online (Sandbox Code Playgroud)

即使您在方法内部删除,您仍然指向实例成员,因此它可以看到更改.

如果您不想影响实例成员,则需要使用该值创建新列表.