add的区别
Collection
确保此集合包含指定的元素(可选操作)。 如果此集合由于调用而更改,则返回 {@code true}。 (如果此集合不允许重复且已包含指定的元素,则返回 {@code false}。
支持此操作的集合可能会限制可以添加到此集合的元素。 特别是,某些集合将拒绝添加 {@code null} 元素,而其他集合将对可以添加的元素类型施加限制。集合类应在其文档中明确指定对可以添加哪些元素的任何限制。
如果集合出于任何原因拒绝添加特定元素,而不是因为它已经包含该元素,则必须抛出异常(而不是返回 {@code false})。 这保留了集合在此调用返回后始终包含指定元素的不变性。
List
将指定的元素追加到此列表的末尾(可选操作)。支持此操作的列表可能会限制可以添加到此列表中的元素。 特别是,某些列表将拒绝添加空元素,而其他列表将对可以添加的元素类型施加限制。 列表类应在其文档中明确指定对可以添加哪些元素的任何限制。
ArrayList
public boolean add(E e)
:将指定的元素追加到此列表的末尾。
public void add(int index, E element)
:在此列表中的指定位置插入指定的元素。将当前位于该位置的元素(如果有)和任何后续元素向右移动(将一个元素添加到其索引中)。
LinkedList
public boolean add(E e)
:将指定的元素追加到此列表的末尾。
Vector
public synchronized boolean add(E e)
:将指定的元素追加到此 Vector 的末尾。
Set
将指定的元素添加到此集合(如果该元素尚不存在)(可选操作)。 更正式地说,如果集合不包含元素 {@code e2},则向此集合添加指定的元素 {@code e},以便 {@code Objects.equals(e, e2)}。如果此集合已包含该元素,则调用将保留该集合不变并返回 {@code false}。 结合对构造函数的限制,这可确保集合永远不会包含重复元素。
上述规定并不意味着集合必须接受所有元素;集合可以拒绝添加任何特定元素,包括
{@code null},并引发异常,如{@link Collection#add Collection.add} 的规范。
单个集合实现应清楚地记录任何对它们可能包含的元素的限制。