Java集合:是否直接添加了对象添加到集合中?

use*_*243 3 java collections

我知道当我将一个对象添加到某些集合(如LinkedList)时,该元素不会直接添加到集合中; 实际上,一个节点被添加到提供链接功能的集合中,并且该节点具有对我添加到集合的Object的引用.这适用于所有Java集合类吗?例如,当我执行以下操作时:

List<String> list = new ArrayList<String>();
list.add("Car");
Run Code Online (Sandbox Code Playgroud)

是将String对象"Car"直接添加到列表中,还是仅将一个节点添加到指向"Car"的列表中?

另外,我可以将其视为代理设计模式吗?

Pet*_*sik 5

Java中的ArrayList使用数组来存储对象的引用,因此它与代理模式无关.您可以看到,对于您自己来说,是一个指向它的OpenJDK实现的链接.第103行具有相关的代码.

private transient Object[] elementData;
Run Code Online (Sandbox Code Playgroud)

您还可以将它与使用节点存储对下一个和上一个元素的引用的LinkedList进行比较List.