2015-02-10 43 views
4

libGDX Array类的javadoc说:可调整大小,有序或无序的对象数组。如果无序,这个类在删除元素时会避免内存拷贝(最后一个元素被移动到被删除元素的位置)。
元素去除改进是这个类的唯一优势还是其他呢?
换句话说 - 如果我不打算从我的列表中删除元素,我可以用ArrayList吗?
libGDX Array类好处

回答

11

Array实际上不是标准Java集合类的唯一“替代”。还有更多像ObjectSetIntIntMap。你可以找到他们全部here

他们大多进行了优化,尽可能避免垃圾回收。他们在很多方面都这样做。

其中一种方法是您已经指出的方法,例如在删除Array中的元素时尽量避免使用内存副本。

此外,他们重新使用迭代器。标准java集合不这样做,这就是为什么每次迭代集合时都会创建新的Iterator

另一种方法是使用基元,它避免了由于自动装箱造成的对象的创建。例如IntIntMap具有int键和int值。标准的java HashMap<Integer, Integer>不能处理会导致许多自动装箱的原语,即int->Integer

您应该随时尝试坚持使用libgdx类,特别是在移动设备上。在桌面上,垃圾收集器通常非常快,您不会注意到它,但即使在那里它也会导致难看的FPS滞后。

+0

完美答案。谢谢! – 2015-02-10 15:01:07