ArrayList和LinkedList深层区别,以及占用空间的深层比较

ArrayList和LinkedList区别

1.数据结构的差异

ArrayList 是一个数组,一块连续的内存空间
LinkedList 一个双向列表,用指针来前后相连

2.浅层来看的区别结论

ArrayList ,查找快,删除插入慢,因为要数据迁移。
在这里插入图片描述
LinkedList ,查找慢,因为需要指针寻找,但是删除插入容易,只需要改变节点的前后指针。

3.从深层的区别结论

ArrayList
LinkedList
都放入 1 , 2 , 3 , 4 ,5,6,7,8

查找第二个元素ArrayList >LinkedList

ArrayList 一定可以通过连续内存的优势快速查找,LinkedList 只能遍历。

查找元素值为6的元素ArrayList 和LinkedList 差不多

都只能通过遍历进行查找

增删中间或者开头的元素 LinkedList >ArrayList

通过链表指针可以快速增删

增删最后一个元素LinkedList 和ArrayList 没什么区别

ArrayList 可以直接添加到最后一个位置不需要偏移
LinkedList 也有last指针,可以直接操作。

4. ArrayList和LinkedList谁更占空间?

LindedList:

在这里插入图片描述
为了恢复前后指针节点会占用跟大空间。

ArrayList:

在这里插入图片描述
所以ArrayList会更省空间。

但是如果你这样想你就大错特错了。

在这里插入图片描述
在这种情况下,多余的1.5倍内存会被浪费,谁更占用内存还不一定。

总结

一般情况下,LinkedList的占用空间更大,因为每个节点要维护指向前后地址的两个节点,但也不是绝对,如果刚好数据量超过ArrayList默认的临时值时,ArrayList占用的空间也是不小的,因为扩容的原因会浪费将近原来数组一半的容量,不过,因为ArrayList的数组变量是用transient关键字修饰的,如果集合本身需要做序列化操作的话,ArrayList这部分多余的空间不会被序列化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值