简单的ArrayList和LinkedList的性能分析:
那么最后:什么时候使用ArrayList和LinkedList呢?
以为在很多情况下ArrayList的性能比较好,所以大多数情况下使用ArrayList,但是如果出现程序的添加和删除元素时,优先考虑LinkedList
(1)当获取list指定的索引出的元素的时候,ArrayList的性能比LinkedList的性能要好,因为ArrayList的底层是以数组实现的,
但是LinkedList则必须一个个的搜索
(2)当向list中添加元素的时候,因为ArrayList的底层是数组实现的所以需要调整插入位置后的所有元素,
而且数组的长度需要添加需要建一个原来长度1.5倍的数组,然后垃圾回收机制回收原来的数组,
这样的系统的开销比较大,对于LinkedList而言,添加的时候一个个的找,直到找到index处的元素然后
再在该元素之前插入新的元素,性能比较好
(3)删除和插入差不多,但是ArrayList的删除要比插入快一点,因为不用创建新的数组,
LinkedList而言删除和插入时系统的开销是差不多的,但是效率还是优于ArrayList
(4)当list向末尾添加一个元素的时候ArrayList并不需要移动后面的元素,
因为添加的元素就是最后一个,所以性能要比LinkedList还要好一点,
但是如果末尾添加一个元素导致集合的长度超过了底层数组的长度,那么需要创建一个原来长度1.5倍的数组,
然后垃圾回收机制回收原有的数组,这样的话开销就大了,此时LinkedList就比较好了
那么最后:什么时候使用ArrayList和LinkedList呢?
以为在很多情况下ArrayList的性能比较好,所以大多数情况下使用ArrayList,但是如果出现程序的添加和删除元素时,优先考虑LinkedList