jdk1.8源码分析之arraylist

jdk1.8源码分析之arraylist

ID:10213431

大小:96.79 KB

页数:9页

时间:2018-06-12

jdk1.8源码分析之arraylist_第1页
jdk1.8源码分析之arraylist_第2页
jdk1.8源码分析之arraylist_第3页
jdk1.8源码分析之arraylist_第4页
jdk1.8源码分析之arraylist_第5页
资源描述:

《jdk1.8源码分析之arraylist》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、仁人教育JDK1.8源码分析之ArrayList一、前言  分析了Map中主要的类之后,下面我们来分析Collection下面几种常见的类,如ArrayList、LinkedList、HashSet、TreeSet等。下面通过JDK源码来一起分析ArrayList底层是如何实现的。(PS:把JVM看完了之后终于可以有成片的时间来阅读源码了,感觉简直不能更爽)。二、ArrayList数据结构  分析一个类的时候,数据结构往往是它的灵魂所在,理解底层的数据结构其实就理解了该类的实现思路,具体的实现细节再具体分析。  ArrayList的数据结构如下:    说明:底层的数据结构就是数组,数

2、组元素类型为Object类型,即可以存放所有类型数据。我们对ArrayList类的实例的所有的操作底层都是基于数组的。下面我们来分析通过数组是如何保证库函数的正确实现的。三、ArrayList源码分析  3.1类的继承关系publicclassArrayListextendsAbstractListimplementsList,RandomAccess,Cloneable,java.io.Serializable  说明:ArrayList继承AbstractList抽象父类,实现了List接口(规定了List的操作规范)、RandomAccess(可随机访问)、Cl

3、oneable(可拷贝)、Serializable(可序列化)。  3.2类的属性   publicclassArrayListextendsAbstractListimplementsList,RandomAccess,Cloneable,java.io.Serializable仁人教育仁人教育{//版本号privatestaticfinallongserialVersionUID=8683452581122892189L;//缺省容量privatestaticfinalintDEFAULT_CAPACITY=10;//空对象数组privatestaticfinal

4、Object[]EMPTY_ELEMENTDATA={};//缺省空对象数组privatestaticfinalObject[]DEFAULTCAPACITY_EMPTY_ELEMENTDATA={};//元素数组transientObject[]elementData;//实际元素大小,默认为0privateintsize;//最大数组容量privatestaticfinalintMAX_ARRAY_SIZE=Integer.MAX_VALUE-8;}ViewCode  说明:类的属性中核心的属性为elementData,类型为Object[],用于存放实际元素,并且被标记为tran

5、sient,也就意味着在序列化的时候,此字段是不会被序列化的。  3.3类的构造函数  1.ArrayList(int)型构造函数   publicArrayList(intinitialCapacity){if(initialCapacity>0){//初始容量大于0this.elementData=newObject[initialCapacity];//初始化元素数组}elseif(initialCapacity==0){//初始容量为0this.elementData=EMPTY_ELEMENTDATA;//为空对象数组}else{//初始容量小于0,抛出异常thrownewI

6、llegalArgumentException("IllegalCapacity:"+initialCapacity);}}ViewCode仁人教育仁人教育  说明:指定elementData数组的大小,不允许初始化大小小于0,否则抛出异常。  2.ArrayList()型构造函数 publicArrayList(){//无参构造函数,设置元素数组为空this.elementData=DEFAULTCAPACITY_EMPTY_ELEMENTDATA;}ViewCode  说明:当未指定初始化大小时,会给elementData赋值为空集合。  3.ArrayList(Collectio

7、n)型构造函数   publicArrayList(Collectionc){//集合参数构造函数elementData=c.toArray();//转化为数组if((size=elementData.length)!=0){//参数为非空集合if(elementData.getClass()!=Object[].class)//是否成功转化为Object类型数组elementData=Arrays.

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

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

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