-2

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

我希望我的矢量对象保持在最上面的“星星”上。

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

然而,我的好朋友告诉我,为什么不直接声明新的 Vector 对象,因为我并不关心 Vector 中以前的星星。

他听起来很有道理,但我很担心,因为我在移动设备上制作这款游戏​​,以某种方式多次创建新实例会减慢我的应用程序。

4

1 回答 1

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 Collections Framework 的成员。与新的集合实现不同,Vector 是同步的。如果不需要线程安全实现,建议使用 ArrayList 代替 Vector。

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

于 2013-05-27T20:43:25.497 回答