libGDX数组class好处

libGDX Array class benefits

libGDX 数组 class 的 javadoc 说:可调整大小、有序或无序的对象数组。如果无序,这 class 避免在删除元素时进行内存复制(最后一个元素移动到删除元素的位置)。
元素去除改进是此 class 的唯一优点还是还有其他优点?
换句话说 - 如果我根本不打算从我的列表中删除元素,我可以使用 ArrayList 吗?

Array 实际上并不是标准 Java 集合 类 中唯一的 "replacement"。还有很多像 ObjectSetIntIntMap。你可以找到所有这些 here.

它们大多经过优化以尽可能避免垃圾回收。他们以多种方式做到这一点。

一种方法是您已经指出的方法,尽可能避免内存复制,例如在删除 Array.

中的元素的情况下

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

另一种方法是使用基元,它避免了由于自动装箱而创建对象。 IntIntMap 例如有 int 个键和 int 个值。标准 java HashMap<Integer, Integer> 无法处理原语,这将导致许多自动装箱 int -> Integer.

只要有可能,您应该始终坚持 libgdx 类,尤其是在移动设备上。在桌面上,垃圾收集器通常非常快,您不会注意到它,但即使在那里,它也会导致难看的 FPS 延迟。