我是新来的Java。Java矢量:清除vs removeAllElements方法
哪个更有效的矢量 - 清除()或removeAllElements()。我会猜想removeAllElements,因为它保持容量不变(不释放内存),而clear()释放内存。取决于应用,可能是可取的。
我将不胜感激。谢谢。
我是新来的Java。Java矢量:清除vs removeAllElements方法
哪个更有效的矢量 - 清除()或removeAllElements()。我会猜想removeAllElements,因为它保持容量不变(不释放内存),而clear()释放内存。取决于应用,可能是可取的。
我将不胜感激。谢谢。
根据关于.removeAllElements()方法的JavaDoc。
“此方法是在 功能的明确方法 (后者是List 接口的一部分)是相同的。”
Vector在Java 1.1中,由于Java 1.4中新Collection API出现,定义与功能明确的()一般List接口。
使用clear(),因为它是现代API。两个功能都是等价的。
Btw。考虑使用ArrayList而不是Vector。 ArrayList不同步,所以它更快,如果你不从同一个线程同时访问列表。
如果您担心效率(并且很可能出于错误原因),请不要使用Vector
,而应使用List
实现(例如ArrayList
)。如果由于其内部同步而使用Vector
(并且我对此有所怀疑),请改为使用synchronizedList
。
而且,Vector.clear()
使用Vector.clear()
时只是调用Vector.removeAllElements()
所以没有功能上的差异,只是多了一个函数调用。也就是说,如果您必须使用Vector
,请致电Vector.clear()
,因为它遵守更现代的接口并表示更清晰的意图。
感谢您指出这一点。因为我来自C++ STL背景,所以只是使用Vector。我会更多地研究列表。 – Paul 2011-03-27 00:37:38
如的JavaDoc Vector.removeAllElements():
移除此 向量中的所有组件,并将其大小设置为零。此 方法在功能 到clear()方法
相同所以它们是相同的。 clear()
更好,因为符合更新的Java Collections界面。
考虑使用'ArrayList'作为'Vector'是一个相当古老的学校 - 只能被阅读旧书的人使用。 – 2011-03-27 02:39:13
同意..我做了更多的研究并已转换。 :) – Paul 2011-03-27 02:50:46