ArrayList与LinkedList的区别

本文探讨了ArrayList与LinkedList这两种常用存储结构的区别。ArrayList采用动态数组实现,适用于频繁查找场景;LinkedList为链表结构,在数据增删操作中表现更优。文章还分析了两者在内存消耗上的不同。

ArrayList与LinkedList的区别

ArrayList和LinkedList是常用的两种存储结构,他们之间有什么样的区别呢?
  • ArrayList是一个动态数组的数据结构,LinkedList是链表的数据结构,他们都是实现了List接口。
  • 当对List频繁进行查找时,ArrayList的效率会比LinkedList高,因为链表的查找必须通过头指针从前往后依次查找。
  • 当对数据进行增加和删除的操作时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,如果数组的长度足够,不需要扩容,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动,如果数组长度不够需要扩容时,就要将原有的数组拷贝到一个新的内存空间然后进行操作。链表只需要更改所需要添加节点的前后的前驱后继的指针指向,所以效率更高。
  • 从利用效率来看,ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。
  • ArrayList的若不输入长度,系统默认生成一个长16的Array,当需要扩容时,需要先申请更大的内存位置,然后将原有的Array拷贝到新申请的内存。LInkedList对内存的消耗在于存储结点信息以及结点指针信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值