哪一个在Object类型的Array和Object类型的ArrayList之间的性能更好?
假设我们有一个Animal
个对象数组:Animal animal[]
和一个arraylist:ArrayList list<Animal>
现在我正在animal[10]
和list.get(10)
哪一个应该更快,为什么?
答案 0 :(得分:60)
很明显,array [10]比array.get(10)更快,因为后者在内部执行相同的调用,但会增加函数调用的开销以及额外的检查。
然而,现代JIT会在一定程度上对此进行优化,您很少需要担心这一点,除非您有一个性能非常关键的应用程序,并且这被认为是您的瓶颈。答案 1 :(得分:37)
来自here:
ArrayList在Java内部由Array支持,任何调整大小操作 在ArrayList中,它会降低性能,因为它涉及创建新的 数组并将内容从旧数组复制到新数组。
在性能方面Array和ArrayList提供的类似 在添加或获取元素的恒定时间方面的性能 你知道索引。虽然ArrayList的自动调整大小可能会减慢 插入有点Array和ArrayList是Java和Java的核心概念 任何严肃的Java程序员都必须熟悉这些差异 在Array和ArrayList之间或更一般的Array vs List。
答案 2 :(得分:19)
当决定使用Array或ArrayList时,你的第一直觉确实不应该担心性能,尽管它们的表现不同。首先要考虑的是你是否知道数组的大小。如果你不这样做,你自然会使用数组列表,只是为了功能。
答案 3 :(得分:11)
我同意某人最近删除的帖子,表示性能上的差异非常小,除非极少数例外情况(他因为从不说话而感到厌恶),你不应该基于此做出你的设计决定。
在您的示例中,元素是对象,性能差异应该是最小的。
如果您正在处理大个原语,那么阵列将在内存和时间方面提供更好的性能。
答案 4 :(得分:10)
阵列性能更好。 ArrayList提供了额外的功能,例如以性能为代价“删除”。