java中vector底层_牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别...

不多说,直接上干货!

这篇我是从整体出发去写的。

List集合中子类 Vector、ArrayList、LinkedList

List:有序, 可重复, 有索引。三者均为可伸缩数组。

Vector:底层数据结构是数组结构。 jdk1.0版本。线程安全的。 无论增删还是查询都非常慢。默认扩充为原来的2倍。

ArrayList:底层数据结构是数组结构。 线程不安全的。 所以ArrayList的出现替代了Vector, 但是查询的速度很快。默认扩充为原来的1.5倍。

LinkedList:底层是链表数据结构。线程不安全的, 同时对元素的增删操作效率很高。但查询慢。

注意: 链表结构是这样的: 让后一个元素记住前一个元素的地址。

Vector 和  ArrayList都是基于存储元素的Object[ ] array来实现的。

LinkedList是采用双向列表来实现的。

1、 线程同步,Vector线程安全,ArrayList线程不安全。

2、 效率问题,Vector效率低,ArrayList效率高。

3、 增长数量,Vector以1.5倍增长,ArrayList以2倍增长。

f32e46771bd4f1c7bd5f1328f9b33c4a.png

LinkdedList,增删改查很快:

c7f43569c74cc9338afce1284fcab3eb.png

LinkedList的查询速率比较慢:

bfd5485fd06b62898d641474a689a6c6.png

List集合子类Vector这个类已经不常用了, 我就说里面的一个方法, Elements方法, 这个方法的返回值是枚举接口, 里面有两个方法, 判断和获取。此接口Enumeration的功能与 Iterator 接口的功能是重复的。Enumeration的名称和方法的名称过程, 书写很麻烦。 所以被Iterator所取代。

ArrayList 、 LinkedList 、 Vector 的底层实现和区别:

ArrayList是实现了基于动态数组的数据结构,LinkedList基于双线链表的数据结构。

ArrayList可以随机定位对于新增和删除操作add和remove,LinedList比较占优势

具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。

Vector与ArrayList唯一的区别是,Vector是线程安全的,即它的大部分方法都包含有关键字synchronized,因此,若对于单一线程的应用来说,最好使用ArrayList代替Vector,因为这样效率会快很多(类似的情况有StringBuffer线程安全的与StringBuilder线程不安全的);而在多线程程序中,为了保证数据的同步和一致性,可以使用Vector代替ArrayList实现同样的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值