首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ArrayList源代码详解二

2012-09-04 
ArrayList源代码详解2对于add(int index,object o)该方法在特定位置插入元素,底层数组的元素都往后面移动

ArrayList源代码详解2

对于add(int index,object o);该方法在特定位置插入元素,底层数组的元素都往后面移动一位,代价相当高,同理remove(int index)

?

对于ArrayList构造方法源代码详解:

public ArrayList(){    this(10);//调用子类带参数的构造方法}public ArrayList(int initialCapacity){    super();    if(initialCapacity<0){        //抛出异常}    this.elementData=new Object(initialCapacity);//定义一个数组}

由此可见,如果我们用默认的构造方法构建ArrayList对象,则底层会生成10个元素长度的一个数组

add(E)方法详解:

public boolean add(E e){    ensureCapacity(size+1);    elementData[size++]=e;    return true;}将制定的元素追加到list末尾,public void ensureCapacity(int minCapacity){    modCount++;    int oldCapacity=elementData.length;    if(minCapacity>oldCapacity){            object oldData[]=elementData;            int newCapacity=(oldCapacity*3)/2 + 1;            if(newCapacity<minCapacity){                newCapacity=minCapacity;         }           elementData=Arrays.copyof(elementData,newCapacity);    }}
由此可以看出,ensureCapacity用于扩展数组本身,如果增加的元素个数超过了10个,则ArrayList底层数组长度为 原数组的长度的1.5倍+1

?

?

热点排行