性能中的数组与ArrayList

时间:2013-10-15 19:39:10

标签: java arrays performance collections arraylist

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

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

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

5 个答案:

答案 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提供了额外的功能,例如以性能为代价“删除”。