libGDX Array类的javadoc说:可调整大小,有序或无序的对象数组。如果无序,则此类在删除元素时避免使用内存复制(最后一个元素移动到已删除元素的位置)。
元素删除改进是否是本课程的唯一优势还是有其他优势?
换句话说 - 如果我不打算从我的列表中删除元素,我可以使用ArrayList吗?
答案 0 :(得分:13)
Array
实际上不是唯一的"替代品#34;标准Java集合类。还有更多像ObjectSet
或IntIntMap
的内容。你可以找到所有这些here。
它们大部分都经过优化,以尽可能避免垃圾回收。他们以多种方式做到这一点。
一种方法是您已经指出的方法,尽可能避免使用内存副本,例如在Array
删除元素的情况下。
此外,他们重新使用迭代器。标准的java集合不会这样做,这就是为什么每次迭代集合时都会创建一个新的Iterator
。
另一种方法是使用基元,这避免了由于自动装箱而创建的对象。例如IntIntMap
有int
个密钥和int
个值。标准java HashMap<Integer, Integer>
无法处理将导致许多自动装箱int
- &gt;的原语。 Integer
。
你应该尽可能地坚持使用libgdx类,特别是在移动设备上。在桌面上,垃圾收集器通常非常快,以至于你不会注意到它,但即使在那里它也会导致丑陋的FPS滞后。