我是新來的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