1 / 11
文档名称:

【Java集合源码剖析】ArrayList源码剖析-编程开发技术.doc

格式:doc   大小:119KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

【Java集合源码剖析】ArrayList源码剖析-编程开发技术.doc

上传人:小博士 2019/7/29 文件大小:119 KB

下载得到文件列表

【Java集合源码剖析】ArrayList源码剖析-编程开发技术.doc

文档介绍

文档介绍::..【Java集合源码剖析】ArrayList源码剖析-编程开发技术【Java集合源码剖析】ArrayList源码剖析原文出处:兰亭风雨ArrayList简介ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态増长内存oArrayList不是线程安全的,只能用在单线程环境下,(List1)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,ess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问,实现了Clonceiblc接口,能被克隆。ArrayList源码剖析ArrayList的源码如下(加入了比较详细的注释):packagejava,util;lassArrayList<E>extendsAbstractList<E>implementsList<E>,ess,Cloneable,{//序列版本号privatestaticfinallongserialVersionlllD=8683452581122892189L;//ArrayList基于该数组实现,用该数组保存数据privatetransientObject[]elementData;//ArrayList屮实际数据的数量privateintsize;//ArrayList带容量大小的构造函数。publicArrayList(intinitialCeipEicity){super();if(initialcapacity<0)thrownewIIlegalArgumentException("IllegalCapacity:〃+initialCapacity);//=newObject[initialCapacity];}//ArrayList无参构造函数。默认容量是10。publicArrayList(){this(10);}//创建一个包含collection的ArrayListpublicArrayList(tion<?dsE>c){elementData=();;if(()!二Object[].class)elementData=(elementData,size,Object[].class);}//将当前容量值设为实际元素个数publicvoidtrimToSize(){modCount++;intoldCapacity=;if(size<oldCapacity){(elementData,size);}}//确定ArrarList的容量。//若ArrayList的容量不足以容纳当前的全部元素,设置新的容量二“(原始容量x3)/2+1”publicvoidensureCapacity(intminCapacity){//将“修改统计数”+1,该变量主要是用来实现fail-fast机制的modCount++;intoldCapacity=;//若当前容量不足以容纳当前的元素个数,设置新的容量二“(原始容量x3)/2+1”if(minCapacity>oldCapacity){ObjectoldData[]=elementData;intnewCapacity=(oldCapacity*3)/2+1;//如呆还不够,则直接将minCapacity设置为当前容量if(newCapacity<minCapacity)newCapacity=minCapacity;^^Of(clementData,ncwCapacity);//添加元索epublicbooleanadd(Ee){//确定ArrayList的容量大小ensureCapacity(size+1); //IncrementsmodCount!!//添加e到ArrayList中elernentData[size++]=e;returntrue;}//返冋ArrayList的实际大小publicintsize(){returnsize;}/