2011-03-27 59 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界面。