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简单分析的主要内容,如果未能解决你的问题,请参考以下文章

容器_JDK源码分析_自己简单实现ArrayList容器

Java编程的逻辑 (38) - 剖析ArrayList

计算机程序的思维逻辑 (38) - 剖析ArrayList

Java学习 -- 简单分析ArrayList实例化的过程

Java学习 -- 简单分析ArrayList实例化的过程

Java容器源码分析之LinkedList