ArrayList和LinkedList的区别

ArrayList和LinkedList的区别

1. 数据结构

  • ArrayList底层数据结构是由数组构成的,可以当做一个自动扩容的动态数组使用
  • LinkedList底层数据结构是由双向链表构成的,可以当做堆栈队列,双端队列等使用.
  • 两者都是对List接口的实现,对List接口的方式有自己的实现
  • 为了序列化,都实现了Serializable接口,参数里面有serialVersionUID字段

2.效率

  • 随机访问效率

在进行随机访问的时候,ArrayList的效率通常比LinkedList高,因为从数据结构来看,ArrayList结构是由可以随机访问的数组构成,而LinkedList是由链表构成,在访问的时候,只能移动指针从一端到另一端

  • 增删效率

LinkedList的效率更高,因为链表可以很方便的从任何地方进行插入,但是ArrayList数组在增删的时候需要对数据的后续所有数据进行移动,在数据较多的时候比较影响效率

3.空间

ArrayList主要控件开销在于需要在List列表预留一定空间;而LinkList主要控件开销在于需要存储结点信息以及结点指针信息。

ArrayList

1.预设容量

​ 在使用之前最好对自己的数据集进行一个估算,然后初始化的时候进行数组的设置 .

​ 因为在达到初始化数组上限之后,arraylist会进行一个扩容操作影响效率,我们要尽量避免频繁的扩容

jdk 1.8 初始容量为10,每次扩容大小变为原来的1.5倍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值