【java集合源码剖析】arraylist源码剖析-编程开发技术

【java集合源码剖析】arraylist源码剖析-编程开发技术

ID:30782851

大小:119.53 KB

页数:11页

时间:2019-01-03

【java集合源码剖析】arraylist源码剖析-编程开发技术_第1页
【java集合源码剖析】arraylist源码剖析-编程开发技术_第2页
【java集合源码剖析】arraylist源码剖析-编程开发技术_第3页
【java集合源码剖析】arraylist源码剖析-编程开发技术_第4页
【java集合源码剖析】arraylist源码剖析-编程开发技术_第5页
资源描述:

《【java集合源码剖析】arraylist源码剖析-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、【Java集合源码剖析】ArrayList源码剖析-编程开发技术【Java集合源码剖析】ArrayList源码剖析原文出处:兰亭风雨ArrayList简介ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态増长内存oArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List1)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArra

2、yList类。ArrayList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了RemdomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问,实现了Clonceiblc接口,能被克隆。ArrayList源码剖析ArrayList的源码如下(加入了比较详细的注释):packagejava,util;publicclassArrayListextendsAbstractListimplementsList,RandomAccess,Cloneable,jav

3、a.io.Serializable{//序列版本号privatestaticfinallongserialVersionlllD=8683452581122892189L;//ArrayList基于该数组实现,用该数组保存数据privatetransientObject[]elementData;//ArrayList屮实际数据的数量privateintsize;//ArrayList带容量大小的构造函数。publicArrayList(intinitialCeipEicity){super();if(initialcapa

4、city<0)thrownewIIlegalArgumentException("IllegalCapacity:〃+initialCapacity);//新建一个数组this.elementData=newObject[initialCapacity];}//ArrayList无参构造函数。默认容量是10。publicArrayList(){this(10);}//创建一个包含collection的ArrayListpublicArrayList(Collcctionc){elementData=c.

5、toArray();size二elementData.length;if(elementData.getClass()!二Object[].class)elementData=Arrays.copyOf(elementData,size,Object[].class);}//将当前容量值设为实际元素个数publicvoidtrimToSize(){modCount++;intoldCapacity=elementData.length;if(size

6、f(elementData,size);}}//确定ArrarList的容量。//若ArrayList的容量不足以容纳当前的全部元素,设置新的容量二“(原始容量x3)/2+1”publicvoidensureCapacity(intminCapacity){//将“修改统计数”+1,该变量主要是用来实现fail-fast机制的modCount++;intoldCapacity=elementData.length;//若当前容量不足以容纳当前的元素个数,设置新的容量二“(原始容量x3)/2+1”if(minCapacity>

7、oldCapacity){ObjectoldData[]=elementData;intnewCapacity=(oldCapacity*3)/2+1;//如呆还不够,则直接将minCapacity设置为当前容量if(newCapacity

8、city(size+1);//IncrementsmodCount!!//添加e到ArrayList中elernentData[size++]=e;returntrue;}//返冋ArrayList的实际大小publicintsize(){returnsize;}//ArrayList是否

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。