数组与ArrayList的性能

在Objecttypes的Array和Objecttypes的ArrayList之间,哪一个性能更好?

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

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

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

然而,现代JIT将在一定程度上优化这一点,除非您有一个性能非常关键的应用程序,并且已经被认为是您的瓶颈,否则您几乎不必担心这一点。

从这里 :

ArrayList在Java中由Array内部支持,ArrayList中的任何resize操作都会降低性能,因为它涉及到创build新Array以及将内容从旧arrays复制到新arrays。


在性能方面,Array和ArrayList提供了类似的性能,如果您知道索引,则用于添加或获取元素的常量时间 。 尽pipeArrayList的自动resize可能会使插入速度减慢Array和ArrayList都是Java的核心概念,任何严肃的Java程序员都必须熟悉Array和ArrayList之间或更一般的Array vs List之间的差异。

当决定使用Array或ArrayList时,你的第一本能确实不应该担心性能,虽然他们的performance不同。 你首先要关心的是你是否事先知道arrays的大小。 如果你不这样做,自然而然你会用一个数组列表,只是为了function。

我同意某个人最近删除的post,performance的差异很小,除了极less数例外(他从来没有说过),你不应该根据这个做出你的devise决定。

在你的例子中,元素是对象,性能差异应该是最小的。

如果你正在处理大量基元 ,一个数组将提供更好的性能,无论是在内存和时间。

数组在性能上更好。 ArrayList提供了额外的function,例如以性能为代价的“删除”。