List 集合之 LinkedList and ArrayList

本文对比了ArrayList和LinkedList两种数据结构的特点。ArrayList基于动态数组实现,适用于频繁查询操作;LinkedList采用链表结构,适合频繁的增删操作。文章还讨论了它们在实际应用中的性能表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List 集合之 LinkedList and ArrayList

本人之前有人问到本人一些问题,今日就来解答一下啊:

 **LinkedList and ArrayList 俩个都List的子类,一般我们初学java的时候都是记忆arraylist linkedlist 还有 Vector **

这里写图片描述

 从上图可以看出,List是有很多子接口跟子类的
 但是我们只说先主要的俩个

这里写图片描述

这里写图片描述

首先来介绍一下啊 ArrayList 数据结构是
这里写图片描述

数组 一个Object 的数组,然后呢这张图还可以看出来 默认初始化数组的长度为10
也就是说你不指定arrayList 的长度的时候他默认的长度为10了,我建议是自己定义出事长度,为什么呢,我们知道,ArrayList长度是可以变的,我又说是数组,数组又怎么可能变的???我不是自相矛端嘛,别急,我们再来看看 每次add的时候,她都会去检查,自身的容器还够不够
这里写图片描述这里写图片描述
然后将员原本的值加新长度的数组里面,长度增加原来的一半。。。感觉空间加的有点小恐怖,然后每次都要检查长度等,所以增加的速度就慢下来了。删除也是一样,要进行计算然后进行位置的移动
这就很影响速度了
让我们再来看看LinkedList
这里写图片描述
我们看到,伊,怎么有点小懵逼。。。等等再看看
这里写图片描述
看到这个大家如果有些基础的话 应该就知道这是一个迭代器,说到迭代器又可以扯很远,,又扯到指针概念,指针又扯到C 这就有点远了。。。 本文就不详细扯了。迭代器就像一个类似for循环类似,将数据一个个处理, 因为这个迭代机制从而使这个LinkedList有属于自己的方法
addFirst(E e)
addLast(E e)
getFirst()
getLast()

removeFirst()
removeLast()
头尾增删查
数据结构是链表结构
所以增删的速度快了,,但是查询的速度就慢了。。。
所以大家可以在项目里面有哪一种的话可以根据他们的特点来进行选择,,而Vector ,记住一点,除了线程安全,其他都慢。严重影响性能,可基本上不用的。。。
总结
ArrayList查询的话速记相对与他的兄弟LinkedList 来说很快了,相对而言删除和增加就慢了。。

再扯一句,,LinkedList的数据结构是链表所以使用collection的删除就要效率低了。所以建议使用Iterator的删除,而且你在循环的删除用collection的删除会报错,Iterator的不会报错,而且个数和原来的数目一致(⊙o⊙)哦

感谢观看,如有不对的地方,请多多指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值