【问题标题】:libGDX Array class benefitslibGDX Array 类的好处
【发布时间】:2015-02-10 09:55:14
【问题描述】:

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

【问题讨论】:

    标签: libgdx


    【解决方案1】:

    Array 实际上并不是标准 Java 集合类的唯一“替代品”。还有更多类似ObjectSet 或IntIntMap。你可以找到他们所有的here。

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

    您已经指出了一种方法,即尽可能避免内存复制,例如在删除 Array 中的元素的情况下。

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

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

    您应该始终尽量坚持使用 libgdx 类,尤其是在移动设备上。在桌面上,垃圾收集器通常非常快,以至于您不会注意到它,但即使在那里它也会导致丑陋的 FP​​S 延迟。

    【讨论】:

    • 完美答案。谢谢!
    猜你喜欢
    • 2023-03-10
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多