java-Array vs ArrayList性能

这个问题在这里已有答案:

  • Java中的数组或列表。 哪个更快?                                     31个答案

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

假设我们有一个animal[10]对象数组:list.get(10)和一个数组列表:ArrayList list<Animal>

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

5个解决方案
66 votes

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

但是,现代JIT会在一定程度上优化此操作,除非您的性能非常关键的应用程序被视为瓶颈,否则您几乎不必为此担心。

TwoThe answered 2019-11-08T14:00:35Z
37 votes

从这里:

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


在性能方面Array和ArrayList提供了相似的   在添加或获取元素的恒定时间方面的性能,如果   你知道索引。 虽然ArrayList的自动调整大小可能会减慢速度   插入一点Array和ArrayList都是Java的核心概念,   任何认真的Java程序员都必须熟悉这些差异   在Array和ArrayList之间,或更一般地说在Array vs List之间。

Rahul Tripathi answered 2019-11-08T14:01:15Z
19 votes

在决定使用Array或ArrayList时,您的第一个直觉实际上不必担心性能,尽管它们的性能有所不同。 首先要考虑的是您是否事先知道数组的大小。 如果不这样做,自然地,您会使用一个数组列表,仅出于功能性考虑。

Paul Samsotha answered 2019-11-08T14:01:44Z
11 votes

我同意某人最近删除的帖子,即性能差异非常小,以至于除极少数例外(他不愿说“从不”)之外,您不应该基于此做出设计决定。

在您的示例中,如果元素是对象,则性能差异应最小。

如果您要处理大量的原语,则数组将在内存和时间方面提供明显更好的性能。

user949300 answered 2019-11-08T14:02:26Z
10 votes

阵列的性能更好。 ArrayList以性能为代价提供了其他功能,例如“删除”。

Ankit Rustagi answered 2019-11-08T14:02:55Z
translate from https://stackoverflow.com:/questions/19389609/array-vs-arraylist-in-performance