将1个arraylist分配给其他vs将1个araylist添加到其他空araylist以使它们都包含相同的对象之间有什么区别

Smr*_*ita 2 java list arraylist

所以我基本上的意思是以下是什么区别?

List<String> phonesContainerOne = new ArrayList<String>();
List<String> phonesContainerTwo = new ArrayList<String>();

phonesContainerOne.add("Nexus 4");
phonesContainerOne.add("Nexus 5");
Run Code Online (Sandbox Code Playgroud)

现在假设我想将这两部手机再次添加到手机容器中.在java中,我可以通过以下方式实现

1.phonesContainerTwo.addAll(phonesContainerOne);

2.phonesContainerTwo = phonesContainerOne;
Run Code Online (Sandbox Code Playgroud)

在我的情况下,两种方式(1和2)之间究竟有什么区别?(ps.我知道addAll用于一次将一种Collection类型的对象添加到另一种方式.除此之外,这些方式之间的其他区别是什么?)

Daw*_*ica 6

执行此操作时addAll,您将获得两个单独的列表,每个列表可以单独修改.那是,

(phonesContainerOne) ? [ Nexus4, Nexus5 ]

(phonesContainerTwo) ? []
Run Code Online (Sandbox Code Playgroud)

(phonesContainerOne) ? [ Nexus4, Nexus5 ]

(phonesContainerTwo) ? [ Nexus4, Nexus5 ]
Run Code Online (Sandbox Code Playgroud)

但是,如果您只是编写,phonesContainerTwo = phonesContainerOne那么最终只有一个列表,但两个变量引用它.

(phonesContainerOne) ? [ Nexus4, Nexus5 ] ? (phonesContainerTwo)
Run Code Online (Sandbox Code Playgroud)