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