ArrayList 和 LinkedList 的区别

1.ArrayList 基于数组实现 , LinkedList 基于链表实现.

2.ArrayList 数据存放在连续空间上的 , LinkedList 数据不是存放在连续空间的.

3.ArrayList 可以进行高效的随机访问 , 按下标操作时间复杂度为O(1).

4.LinkedList 能够高效进行插入和删除 , 时间复杂度为O(1).

5.对于add(index, elem) , ArrayList 取下标过程是O(1) , 插入过程是O(N) ; LinkedList 取下标O(N) , 插入过程O(1).

6.ArrayList 初始化的时候通过capacity参数指定最大容量 , add尾插的时候 , 元素个数小于最大容量的时候,效率为O(1) , 当达到最大   容量 , 会进行扩容操作(new一个1.5倍(Java8)的连续空间,把元素搬过来) , LinkedList 没有这个概念 , 每插入一个新的元素 , new一个新的结点对象.

7.在频繁内存申请释放的时候 , 很容易产生内存碎片 , ArrayList比较害怕内存碎片 , 而 LinkedList 则不受影响.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值