list实现类性能大比较

list的实现类

list有三大特点:有索引,有序,可重复

  • ArrayList:基于数组实现的 List,支持动态扩容和随机访问,适合随机访问较多的场景。
  • LinkedList:基于双向链表实现的 List,支持快速插入和删除操作,适合频繁插入、删除操作的场景。
  • Vector:同步的动态数组,与 ArrayList 类似,但是支持线程安全,在性能上相对较差,已经不推荐使用。
  • Stack:基于 Vector 实现的栈,通常用于后进先出(LIFO)的操作。

性能测试

从尾部添加元素

在这里插入图片描述
arrayList和linkedList尾插的性能相差不大,stack和vector没什么差别,
其中,stack是vector的子类

任意位置插入数据

由于vector及其子类已经被市场淘汰了,所以这里只比较arrayList以及linkedList
在这里插入图片描述
很明显,linkedList在任意位置插入元素的性能远优于arrayList,大约是一万倍的差距(结果有点吓人,可能实际相差没那么大),这是因为arrayList底层是一个数组,在某个位置删除或插入数据,都要移动后面的元素,造成了性能损耗,而linkedList底层是链表(单项链表),在任意位置增删元素的耗时都差不多(其实只会影响上一个元素以及新元素)

获取任意位置的数据

在这里插入图片描述
arrayList更快,是linkedList的两百倍,也是因为数组通过索引和起始位置的就能快速计算出目标元素的地址值,而链表还要逐个确认是不是目标元素

结论

仅仅是尾部添加元素和查询元素频繁的话,就选择arrayList
如果是要频繁修改任意元素,就选择linkedList

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值