了解三种List的区别

ArrayList

​ ArrayList 是 List 实现类,内部通过数组实现,它允许对元素进行快速随机访问。

​ 优点:查询快,修改快;缺点:增删慢。原因在于索引。

1)数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,会在原始大小上扩容1.5倍,将已经有数组的数据复制到新的存储空间。

2)当 ArrayList 的中间位置插入或者删除元素时,需要对数组进行复制、移动,代价比较高。适合随机查找和遍历,不适合插入和删除。

Vector

​ Vector 与 ArrayList 一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写 Vector,避免多线程同时写而引起的不一致性,但实现同步可能需要高昂的花费,因此,访问它比访问 ArrayList 慢。

LinkedList

​ LinkedList 是用于链表结构存储数据的。

​ 适合数据的动态插入和删除,不适合查询、修改数据,随机访问和遍历速度较慢。

数组

​ 数组必须实现定义固定的长度,不能适应数据动态的增减。从栈中分配空间,对于程序方便快速,但是自由度小。

​ 优点:利用下标定位,随机访问性强,查找速度快;

​ 缺点:插入和删除的效率低,内存利用率低,内存空间要求高,必须有足够的连续内存空间。

链表

​ 链表动态进行存储分配,可以适应数据动态地增减的情况。从堆中分配空间,自由度大但是申请管理比较麻烦。

​ 优点:插入和删除的效率高,内存利用率高,不会浪费内存;

​ 缺点:定位查询速度慢,修改慢。

加入小猿QQ群:947117563,一起闲聊java那些事!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值