Vector.add()
方法和Vector.addElement()
方法的区别,同时提供一个示例代码片段。Vector.add()
方法和Vector.addElement()
方法的区别,同时提供一个示例代码片段。add()
方法来自Java集合框架中的List
接口,该框架在Java 1.2中添加。而Vector
早于此并与其结合使用。具体差异如下:
addElement()
是synchronized
的,而add()
不是。在Java集合框架中,如果您希望这些方法同步,请将集合包装在Collections.synchronizedList()
中;而
add()
返回成功的布尔值,而addElement()
返回void
类型。
技术上讲,synchronized
的差异并不是API的一部分,而是实现细节。
推荐使用List
方法。就像我说的,如果您想要一个synchronized
的List
,可以执行以下操作:
List<String> list = Collections.synchronizedList(new ArrayList<String>());
list.add("hello");
public synchronized void addElement(E obj)
public synchronized boolean add(E e)
- Mahmoud Emam 153 public synchronized boolean add(E object) {
154 if (elementCount == elementData.length) {
155 growByOne();
156 }
157 elementData[elementCount++] = object;
158 modCount++;
159 return true;
160 }
并且
223 public synchronized void addElement(E object) {
224 if (elementCount == elementData.length) {
225 growByOne();
226 }
227 elementData[elementCount++] = object;
228 modCount++;
229 }
add
返回true
(阅读代码,它从不返回false
)。 - Mark Elliotjavadoc提到:
public void addElement(E obj)
该方法与 add(E) 方法(List 接口的一部分)的功能相同。
它们都存在的原因是(来自同一份 javadoc):
从Java 2平台v1.2开始,这个类被改装为实现List接口,成为Java Collections Framework的成员。
List有一个add方法,所以在Vector中添加了一个实现,但为了保持向后兼容性,addElement没有被删除。
addElement
这个方法在功能上与 add(Object) 方法相同(它是 List 接口的一部分)。
因此,以下两种方式没有区别:
Vector v = new Vector();
v.addElement( new Object() );
并且
Vector v = new Vector();
v.add( new Object() );
这个类(vector)自Java1.0以来就存在,现在基本上被稍微更快的ArrayList
所取代。
主要区别 -> add() 方法总是返回 true,而 addElement() 没有返回值。
详细来说: addElement(object) 方法在功能上与 add(Object) 方法相同(它是 List 接口的一部分)。
add(Object ) 是因为 Vector 实现了 List 接口,并且自 Java 1.2 以来就出现了:早期版本的集合类 Vector 和 Hashtable 已经过改进,以实现集合接口。
addElement 是“原始”的 Vector 方法。
在这里找到了答案.. Vector 中 add() 和 addElement() 的区别是什么?