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,这个数组到底会不会存在?

 

posted @ 2020-05-29 18:19  smartcat994  阅读(190)  评论(0编辑  收藏  举报