java集合03-Vector

本文详细介绍了Vector类,它是JDK1.0版本添加的类,继承自AbstractList并实现了多个接口,包括List、RandomAccess和Cloneable。Vector提供了线程安全的操作,并拥有与ArrayList相似的数据结构,但包含额外的元素如elementCount和capacityIncrement。文章还讨论了Vector的四种遍历方式及其效率。

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

Vector基础

public class Vector<E>  extends AbstractList<E>  implements List<E>, RandomAccess, Cloneable, java.io.Serializable {}

(01)矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。
(02) 继承了AbstractList,实现了List;所以,它是一个队列,支持相关的添加、删除、修改、遍历等功能
(03) 实现了RandmoAccess接口,即提供了随机访问功能。RandmoAccess是java中用来被List实现,为List提供快速访问功能的。在Vector中,我们即可以通过元素的序号快速获取元素对象;这就是快速随机访问。
(04)Vector 实现了Cloneable接口,即实现clone()函数。它能被克隆。

备注:和ArrayList不同,Vetor使用synchronized修饰部分方法,使得 Vector中的操作是线程安全的

Vector数据结构

Vector的数据结构和ArrayList差不多,它包含了3个成员变量:elementData , elementCount, capacityIncrement。

(01) elementData 是"Object[]类型的数组",它保存了添加到Vector中的元素。elementData是个动态数组,如果初始化Vector时,没指定动态数组的>大小,则使用默认大小10。随着Vector中元素的增加,Vector的容量也会动态增长,capacityIncrement是与容量增长相关的增长系数,若容量增加系数 >0,则将容量的值增加“容量增加系数”;否则,将容量大小增加一倍

(02)elementCount 是动态数组的实际大小。

(03) capacityIncrement 是动态数组的增长系数。如果在创建Vector时,指定了capacityIncrement的大小;则,每次当Vector中动态数组容量增加时>,增加的大小都是capacityIncrement。

Vector遍历方式

(01) 第一种,通过迭代器遍历。

Iterator iter = list.iterator(); 
while (iter.hasNext()) {
    iter.next();     
}

(02) 第二种,随机访问,通过索引值去遍历。

Integer value = null;
int size = vec.size();
for (int i=0; i<size; i++) {
    value = (Integer)vec.get(i);        
}

(03) 第三种,另一种for循环

Integer value = null;
for (Integer integ:vec) {
    value = integ;
}

(04) 第四种,Enumeration遍历

Integer value = null;
Enumeration enu = vec.elements();
while (enu.hasMoreElements()) {
    value = (Integer)enu.nextElement();
}

效率:多次遍历Vector测试,使用索引的随机访问方式最快,使用迭代器最慢。

RandomAccess:24 ms
Iterator:25 ms
For:23 ms
Enumeration:24 ms

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值