数组与数组性能中的列表

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

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

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


答案 1

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

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


答案 2

从这里

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


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