Java容器----ArrayList简单分析
Posted SmartCat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java容器----ArrayList简单分析相关的知识,希望对你有一定的参考价值。
ArrayList在Java1.2之后就存在了,因为其自动扩容等特性,是一个很好的使用工具。
准确的说本来我以为自己对Array的掌握已经很足够了,后面被突然的问倒,让我觉得应该自己认认真真的看下源码了,网上的博客也好,视频也好,远远没有源码中的艺术来的精彩。
serialVersionUID是一个序列化的参数,可以通过这个来判别版本号是否一致。这个参数是通过类信息通过Hash计算出的。
private static final int DEFAULT_CAPACITY = 10;表示的是默认的大小容量
private static final Object[] EMPTY_ELEMENTDATA = {};是一个空元素的数组,这个是在构造函数传入cappacity为0的时候直接给以的。
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};这个也是一个空的数组,按照doc给的解释,这是为了辨别加入时候的元素需要多少的扩容空间。
transient Object[] elementData; 一个仅仅类内可以见的真正存放数据的数组
private int size;数组中的元素实际的数量
public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } }
ArrayList的构造函数,传入你需要的容量,如果传入的是0那么就会给上面已经final过的空元素数组
public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }
无参构造器给予的是另外一个空的元素。如果数组为0,这个数组到底会不会存在?
以上是关于Java容器----ArrayList简单分析的主要内容,如果未能解决你的问题,请参考以下文章