2013-05-27 59 views
-2

我正在創建一個遊戲應用程序,您爬上「星星」。Android Vector類,我應該使用「新」還是「清除()」?

我想讓我的矢量對象保持最頂級的「星星」。

因此,我的grapTopMostStars方法調用.clear()爲它使用的矢量對象,然後抓住最上面的星星。

但是,我的好朋友告訴我,爲什麼不直接聲明新的Vector對象,因爲我並不在乎Vector中的以前的星星。

他聽起來有效,但我擔心,因爲我在移動設備上製作這款遊戲​​,多次創建新實例會減慢我的應用程序。

+3

您應更好地被考慮更換'VECTOR' – Kai

回答

4

clear內部調用removeAllElements其執行如下:

651  public synchronized void removeAllElements() { 
    652   modCount++; 
    653   // Let gc do its work 
    654   for (int i = 0; i < elementCount; i++) 
    655    elementData[i] = null; 
    656 
    657   elementCount = 0; 
    658  } 

迭代的每一個項設置爲null矢量不僅僅是創建一個新的矢量肯定更多的開銷。

順便說一下,如果可能的話,您應該用代替Vector。該Javadoc告訴我們:

從Java 2平臺v1.2,這個類被改造爲 實現List接口,使它成爲Java的 Collections Framework的成員。與新的收集實現不同, 矢量是同步的。如果不需要線程安全的實現,建議使用ArrayList來代替Vector。

(線程安全的東西比不同步的非線程安全類慢。)

+0

泰!很高興知道我需要使用ArrayList! – BlueBug

相關問題