2011-03-27 63 views
6

我是新来的Java。Java矢量:清除vs removeAllElements方法

哪个更有效的矢量 - 清除()或removeAllElements()。我会猜想removeAllElements,因为它保持容量不变(不释放内存),而clear()释放内存。取决于应用,可能是可取的。

我将不胜感激。谢谢。

+2

考虑使用'ArrayList'作为'Vector'是一个相当古老的学校 - 只能被阅读旧书的人使用。 – 2011-03-27 02:39:13

+0

同意..我做了更多的研究并已转换。 :) – Paul 2011-03-27 02:50:46

回答

9

根据关于.removeAllElements()方法的JavaDoc

“此方法是在 功能的明确方法 (后者是List 接口的一部分)是相同的。”

7

Vector在Java 1.1中,由于Java 1.4中新Collection API出现,定义与功能明确的()一般List接口。

使用clear(),因为它是现代API。两个功能都是等价的。

Btw。考虑使用ArrayList而不是Vector。 ArrayList不同步,所以它更快,如果你不从同一个线程同时访问列表。

2

如果您担心效率(并且很可能出于错误原因),请不要使用Vector,而应使用List实现(例如ArrayList)。如果由于其内部同步而使用Vector(并且我对此有所怀疑),请改为使用synchronizedList

而且,Vector.clear()使用Vector.clear()时只是调用Vector.removeAllElements()所以没有功能上的差异,只是多了一个函数调用。也就是说,如果您必须使用Vector,请致电Vector.clear(),因为它遵守更现代的接口并表示更清晰的意图。

+0

感谢您指出这一点。因为我来自C++ STL背景,所以只是使用Vector。我会更多地研究列表。 – Paul 2011-03-27 00:37:38

1

如的JavaDoc Vector.removeAllElements()

移除此 向量中的所有组件,并将其大小设置为零。此 方法在功能 到clear()方法

相同所以它们是相同的。 clear()更好,因为符合更新的Java Collections界面。