Java学习之ArrayList和LinkedList

简单的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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值