ArrayList,LinkedList,HashMap,HashSet,vactor区别整理

本文详细介绍了Java集合框架中ArrayList, LinkedList, HashMap, HashSet和Vector的区别。ArrayList和LinkedList都是List接口的实现,底层分别使用数组和链表存储,适合不同的增删查操作。HashSet实现了Set接口,基于HashMap实现,保证元素唯一性。Vector与ArrayList类似,但具有线程安全性。HashMap以键值对形式存储,冲突时使用链表或红黑树解决。" 132876098,9639234,遗传优化与模拟退火结合BP神经网络的Matlab预测算法,"['神经网络', '算法', 'Matlab']

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

ArrayList,LinkedList,HashMap,HashSet,vactor之间的区别与联系这些在面试中经常会被问到,现在整理一下,方便以后查询。
要说这些东西,就必须先提一下这些东西总体上的划分:
ArrayList,LinkedList是实现了List接口,而List接口有继承了Collection接口。
vactor也是实现了List接口。
HashSet是实现了Set接口,Set接口继承了Collection接口。
HashMap是实现了Map接口。
所以,总体上ArrayList,LinkedList,vactor属于List类的集合,HashSet属于Set类的集合,他们同属于集合,而HashMap实现的是Map接口,所以它虽然属于集合,但Map和Collection是两个不同的接口。
下面来说一下他们之间的差别。
LinkedList
LinkedList是以链表存放,类中有一个内部类,这个内部类是一个小的集合Node,他里面只能放三个元素,即当前下标,之前和之后所对应的元素。集合的添加,删除,查找都是靠这个类来实现的,它相当于游标卡尺的指针。这个类在添加,删除元素时,直接通过Node判断判断链表的头和尾,在链表的两端段进行操作。在随机访问集合时,需要遍历链表的下标,找到所在位置,获取值。在空间上它的每一个元素都需要消耗相当的空间,所以LinkedList在添加删除是效率先对其他较高,访问时较低。
ArrayList
ArrayList是以数组形式存放,相当于一个动态数组,初始大小是10,当要扩容时,会先创建一个大1.5倍的数组(newCapacity = oldCapacity + (oldCapacity >> 1)),然后复制过去。所以它在list列表的结尾会预留一定的容量空间,造成一定的空间浪费。数组相对来说在添加或者删除一个元素时,当前的列表所所有的元素都会被移动,效率较慢,但在访问时,效率较高。
vactor
vactor底层的数据结构也是数组存放,除了在线程安全问题上相对于ArrayList更安全,其余几乎一样,他在添加,访问过程中添加了同步锁,线程更安全。
HashSet
HashSet实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值