读ArrayList、Vector、LinkedList源码笔记

ArrayList

1,ArrayList继承了AbstractList抽象类,实现类List、RandomAccess、Cloneable、Serializable接口,其中要解释的是RandomAccess,实现RandomAccess的集合可以进行快速随机访问,详细解释 :https://blog.csdn.net/weixin_39148512/article/details/79234817

2,ArrayList的内部数据结构是Object[],元素保存在对象数组里。

3,ArrayList的默认大小为10,超出容量时自动增长,增长到原来容量的1.5倍,大小保存在size属性里。

4,ArrayList根据索引查找的效率是真的高,插入和删除元素的效率不能一概而论,如果在最后面添加元素,效率很高,如果在里面插入元素就要移动后面的元素,效率比较低;删除元素同理。

Vector

1,Vector继承了AbstractList抽象类,实现类List、RandomAccess、Cloneable、Serializable接口,和ArrayList完全相同。

2,Vector的内部数据结构是Object[],元素保存在对象数组里。

3,Vector的默认大小为10,超出容量时自动增长,增长到原来容量的2倍,大小保存在elementCount属性里,要通过size()方法 获取,这点和ArrayList有区别。

4,Vector在很多方法上使用了Synchronized保证线程安全,因此Vector效率低于ArrayList。

LinkedList

1,LinkedList继承AbstractSequentialList实现了List、Deque、Cloneable、Serializable接口,其中 Deque是双端队列的接口,LinkedList内部数据结构是双端队列。

​​​

2,​LinkedList的大小保存在size属性里,因为LinkedList是链表实现的所以有多少元素集合就有多大,不存在空元素的情况。

3,LinkedList根据索引查找的效率低,因为要从表头或者从表尾开始遍历(如果索引靠近表头就从表头开始,如果靠近标为就从表位开始),插入或删除元素的效率也要分情况,操作靠近表头或者表尾的数据效率肯定高,因为需要遍历的数据少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值