请解释Vector.add()
方法与Vector.addElement()
方法之间的区别,以及示例代码段
答案 0 :(得分:28)
add()
来自List
接口,它是Java 1.2中添加的Java Collections Framework的一部分。 Vector
早于此,并对其进行了改造。具体差异是:
addElement()
是synchronized
。 add()
不是。在Java Collections Framework中,如果您希望同步这些方法,请将该集合包装在Collections.synchronizedList()
;以及
add()
返回成功的布尔值。 addElement()
的回复类型为void
。
技术上synchronized
差异不属于API。这是一个实现细节。
赞成使用List
方法。就像我说的,如果你想要synchronized
List
做:
List<String> list = Collections.synchronizedList(new ArrayList<String>());
list.add("hello");
答案 1 :(得分:6)
方法签名不同,add返回true,而addElement为void。
来自http://www.docjar.com/html/api/java/util/Vector.java.html
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 }
答案 2 :(得分:5)
javadoc提及:
public void addElement(E obj)
此方法在功能上与add(E)方法(它是List接口的一部分)相同。
它们都存在的原因是(来自同一个javadoc):
从Java 2平台v1.2开始,这个类被改进以实现List接口,使其成为Java Collections Framework的成员。
List
有一个add
方法,因此向Vector
添加了一个实现,但为了保持向后兼容性,addElement
未被删除
答案 3 :(得分:1)
<强>的addElement 强>
此方法的功能与add(Object)方法(它是List接口的一部分)相同。
所以:
之间没有区别Vector v = new Vector();
v.addElement( new Object() );
和
Vector v = new Vector();
v.add( new Object() );
这个类(向量)从Java1.0开始就存在,现在几乎被ArrayList
所取代,它的优点是速度稍慢。
答案 4 :(得分:0)
主要区别 - &gt; add()将始终返回true,而addElement()没有返回值。
在dept中: addElement(object)方法在功能上与add(Object)方法(它是List接口的一部分)相同。
add(Object)是因为Vector实现了List接口,它从Java 1.2开始出现,当Vector被移动到集合时:早期版本的集合类Vector和Hashtable已被改进以实现集合接口。
addElement是&#34;原创&#34;矢量法。
在这里找到了这个答案.. What is difference between add() and addElement() in Vector?