ArryaList和LinkedList性能分析和适用场景

ArrayList和LinkedList

  我们先说性能方面;

    1.插入:

      ArrayList是单向链表,底层是数组存储形式,在添加的时候,如果添加在ArrayList尾部,则性能更快于LinkedList,但是在List中添加完元素之后,导致超过底层数组的长度,就会垃圾回收原来的数组,并且用System.copyArray赋值到新的数组当中,这开销就会变大,而LikedList在插入时候,明显高于ArrayList,因为LinkedList是双向链表,但是在如果index(要插入的位置==size)则就不会进行entry(index)查找,如果不等于则就会进行查找操作,这个也是LinkedList开销比较大得地方,即使这样性能也明显高于ArrayList;

  2.删除:

    ArrayList 整体的会向前移动一格,然后再要删除的index位置置空操作,ArrayList的remove要比add的时候更快,因为不用再复制到新的数组当中了

LikedList 的remove操作相对于ArrayList remove更快。


3. 使用与场景

  但是在大部分情况下ArrayList性能不行优于LinkedList,但是如果是经常进行插入,删除操作则就会使用LinkedList会好很多。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值