Array 与 ArrayList 在性能上的对比

Object 类型的 Array 和 Object 类型的 ArrayList 哪一个性能更好?

假设我们有一个 Animal对象的数组: Animal animal[]和一个数组列表: ArrayList list<Animal>

现在我在做 animal[10]list.get(10) 哪一个应该更快,为什么?

128949 次浏览

数组在性能方面更好。 ArrayList 提供了额外的功能,比如以性能为代价的“移除”。

来自 给你:

ArrayList 由 Java 中的 Array 内部支持,任何调整大小的操作 在数组列表中会降低性能,因为它涉及到创建新的 数组并将内容从旧数组复制到新数组。


在性能方面,Array 和 ArrayList 提供了类似的 在增加或获得元素的常量时间方面的性能,如果 你知道 index 。虽然数组列表的自动调整可能会减慢速度 数组和数组列表都是 Java 的核心概念 任何认真的 Java 程序员都必须熟悉这些差异 在 Array 和 ArrayList 之间,或者在更一般的 Array 和 List 之间。

当决定使用 Array 或 ArrayList 时,您的第一直觉确实不应该担心性能,尽管它们的性能确实不同。您首先应该关心的是是否事先知道 Array 的大小。如果不这样做,自然会使用数组列表,这只是为了实现功能。

很明显,array [10]比 array.get (10)快,因为后者在内部执行相同的调用,但是增加了函数调用的开销以及额外的检查。

然而,现代的 JIT 将在一定程度上优化这一点,您很少需要担心这一点,除非您有一个性能非常关键的应用程序,并且这已经被度量为您的瓶颈。

我同意一些人最近删除的帖子,即性能上的差异是如此之小,以至于除了极少数例外(他因为说“永远不要”而受到批评) ,你不应该根据这一点做出设计决策。

在您的示例中,如果元素是 Objects,那么性能差异应该是最小的。

如果处理的是 很大数字 原始人,则数组将在内存和时间方面提供明显更好的性能。