Android Vector类,我应该使用“new”还是“clear()”?

时间:2013-05-27 20:32:55

标签: java android vector

我正在创建一个游戏应用程序,您可以爬上“星星”。

我希望我的矢量对象能够抓住最顶级的“星星”。

所以我的grapTopMostStars方法为它使用的矢量对象调用.clear()然后抓住最顶端的星。

然而,我的好朋友告诉我,为什么不宣布新的Vector对象,因为我并不真正关心我Vector中的前一个星星。

他听起来很有效,但我担心因为我在移动设备上制作这个游戏,不知何故多次创建新实例会减慢我的应用程序。

1 个答案:

答案 0 :(得分: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替换ArrayListJavadoc告诉我们:

  

从Java 2平台v1.2开始,这个类被改装为   实现List接口,使其成为Java的成员   馆藏框架。与新的集合实现不同,   矢量是同步的。如果不需要线程安全的实现,   建议使用ArrayList代替Vector。

(线程安全的东西比非同步的非线程安全的类慢。)