欢迎来到天天文库
浏览记录
ID:30774603
大小:128.50 KB
页数:11页
时间:2019-01-03
《【java集合源码剖析】vector源码剖析-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、【Java集合源码剖析】Vcctoi•源码剖析-编程开发技术【Java集合源码剖析]Vector源码剖析原文出处:兰亭风雨Vector简介Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些吋候还是要加入同步语句来保证线程的安全),可以用于多线程环境。Vector没有丝线Serializable接口,因此它不支持序列化,实现了Cloncablc接口,能被克隆,实现了RandomAccess接口,支持快速随机访问。
2、Vector源码剖析Vector的源码如下(加入了比较详细的注释):packagejava,util;publicclassVectorextendsAbstractListimplementsList〈E>,RandomAccess,Cioneable,java.io.Serializable{//保存Vector中数据的数组protectedObject[]elementData;//实际数据的数量protectedintelementCount;//容量增长系数protectedintcapacityTncremen
3、t;//Vector的序列版本号privatestaticfinallongserialVersionUID=-2767605614048989439L;//Vector构造函数。默认容量是10。publicVector(){this(10);//指定Vector容量大小的构造函数publicVcctor(intinitialCapacity){this(initialCapacity,0);}//指定Vector"容量大小〃和〃壇长系数〃的构造函数publicVcctor(intinitialCapacity,intcapacity
4、lncrcment){super();if(initialcapacity<0)thrownewIIlegalArgumentException("IllegalCapacity:〃+initialCapacity);//新建一个数组,数组容量是initialCapacitythis.elementData=newObject[initialCapacity];〃设置容量增长系数this.capacityIncrement二capacityIncrement;}//指定集合的Vector构造函数。publicVector(Collec
5、tionc){//获取“集合(c)”的数组,并将其赋值给elementDataelementData二c.toArrayO;//设置数组长度clementCount二clemcntData.length;//c.toArraymight(incorrectly)notreturnObject[](see6260652)if(elementData.getClass()!二Object[].class)elementDota=Arrays.copyOf(elementDota,elernentCount,Objec
6、t[].class);//将数组Vector的全部元素都拷贝到数组anArray屮publicsynchronizedvoidcopyTnto(Object]]anArray){S^^stcm.arraycopy(clemcntData,0,emArray,0,clemcntCount);}//将当前容量值设为二实际元素个数publicsynchronizedvoidtrimToSize(){modCount++;intoldCapacity=elementData.length;if(elementCount7、){elementData二Arrays.copyOf(elementData,elementCount);//确认“Vector容量”的帮助函数privatevoidcnsurcCapacityHelper(intminCapacity){intoldCapacity=elementData.length;//当Vector的容量不足以容纳当前的全部元素,增加容量大小。//若容量增量系数>0(即capacityIncrement>0),则将容量增大当capacityTncrement//否则,将容量增大一倍。if(minCapaci8、ty>oldCapacity){Object[]oldData=elementData;intnewCapacity二(capacityIncrement>0)?(oldCapacity+capacitylncremen
7、){elementData二Arrays.copyOf(elementData,elementCount);//确认“Vector容量”的帮助函数privatevoidcnsurcCapacityHelper(intminCapacity){intoldCapacity=elementData.length;//当Vector的容量不足以容纳当前的全部元素,增加容量大小。//若容量增量系数>0(即capacityIncrement>0),则将容量增大当capacityTncrement//否则,将容量增大一倍。if(minCapaci
8、ty>oldCapacity){Object[]oldData=elementData;intnewCapacity二(capacityIncrement>0)?(oldCapacity+capacitylncremen
此文档下载收益归作者所有