ArrayList
是基于数组实现的,LinkedList
是基于双向链表实现的。随机访问ArrayList
性能优于LinkedList
。- 添加:
ArrayList
在添加元素的时候如果不涉及到扩容,性能在两种情况下(中间位置新增元素、尾部新增元素)比LinkedList
好很多,只有头部新增元素的时候比LinkedList
差,因为数组复制的原因。如果涉及到数组扩容的话,ArrayList
的性能就没那么可观了,因为扩容的时候也要复制数组。 - 删除:从集合头部删除元素时,
ArrayList
花费的时间比LinkedList
多很多;从集合中间位置删除元素时,ArrayList
花费的时间比LinkedList
少很多;集合尾部删除元素时,ArrayList
花费的时间比LinkedList
少一点。 - 遍历:for循环遍历的时候,
ArrayList
花费的时间远小于LinkedList
;迭代器遍历的时候,两者性能差不多。